解决SSH: Transferred 0 file(s)

前言

公司项目使用jenkins来做自动部署。其中使用到publish over SSH plugin插件。
该插件可以实现项目的远程发布。在使用中遇到一个坑,一直未能解决

问题

  • 安装插件. 进入插件管理,输入上面的名字即可。

  • 配置远程服务器。


    image.png

    记得点击test 出现success才算配置ok

  • 在Job中配置参数


    image.png
  • 点击立即构建。在日志中出现如下的文字。

SSH: EXEC: completed after 400 ms
SSH: Disconnecting configuration [8楼centos7-test] ...
SSH: Transferred 0 file(s)
Build step 'Send files or execute commands over SSH' changed build result to SUCCESS
Finished: SUCCESS

去远程服务器的目录下查看文件,也未能找到。
说明文件发送失败。

解决

该问题出现的初期,我尝试找一下问题所在。未能找到。遂放弃解决。转而通过 执行远程命令来实现文件传输。
近期得一些空闲,于是开始研究问题原因所在。

在咨询阅读官方的说明文档之后,一一尝试,总算解决了问题。
官方文档

这里举例说明,如果实现名称为sskzmz的任务的项目文件发送到远程服务器/www/sites/sskzmz/目录下。

注: 构建文件所在的目录是 /var/jenkins_home/workspace/sskzmz

则配置如下:

  • Source files **/* 表示sskzmz这个job的工作目录下所有的文件和目录。
  • Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。通常留空。
  • Remote directory 该操作是基于设定的服务器目录进行。这里我的服务器配置是的/www. 因此这里应该写sites/sskzmz即可。
  • Exec command 远程服务器执行的命令。例如可以输出 service nginx restart 或者/www/xx. sh 均可。

重点一: source files 要基于任务的目录进行。不支持绝对路径。如果配置不对,则找不到文件。上例中/var/jenkins_home/workspace/sskzmz 是任务目录。最终jenkins会选择 /var/jenkins_home/workspace/sskzmz/**/* 查询所要传送的文件。

重点二: Remote directory 要基于你远程服务器的目录配置。你远程服务器配置的基准是/www 。则最终的文件目录是 /www+ Remote directory的配置参数。不支持绝对路径。

只要理解上面这2点,就不会再出现SSH: Transferred 0 file(s)

总结

要学会看文档,即使是英文的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,926评论 6 342
  • 七月的江城远不及往年酷热,但也够闷够潮,老同学不住抱怨“简直像下水道!”他从东北遥遥飞来指导学生参加渡桥承重比赛,...
    周行_阅读 159评论 0 0
  • 那么晚了,是因为在乎,而你是不是因为无聊。
    Timeless凛冬阅读 291评论 0 0
  • 这个周末本来要去参加DISC的,但是由于周六的50公里徒步错过了。 这是很早之前就和小伙伴约好的,因为信任队长我加...
    光沐思维阅读 184评论 0 0