Jenkins SSH插件,仅传输已更改的文件

时间:2017-02-08 12:19:37

标签: jenkins

我有一个Jenkins工作,最后将整个工作区的文件传输到另一台服务器上,我将启动该应用程序。 我的应用程序是一个Ruby on Rails项目,所以我有很多不同的文件要传输。 当然不是每个文件都需要传输,因为它没有变化,但是SSH插件无论如何都会这样做。

是否有配置或其他插件我可以更改此行为? 对于包含更大文件的其他项目来说,这尤其有趣。

由于

1 个答案:

答案 0 :(得分:7)

如果您使用的是 Linux ,则可以使用rsync将文件传输到远程服务器。

  

rsync以其delta传输算法而闻名,它可以减少   通过仅发送差异通过网络发送的数据量   源文件和目标中的现有文件之间。

因此,它不会传输整个工作区,只会传输已更改,删除或添加的文件。

对于Jenkins,您可以添加执行Shell 作为构建步骤,然后通过ssh将工作区rsync同步到远程服务器。

例如:

rsync -avz -e 'ssh -p <post_no>' <path/to/project/workspace/> <username>@<server_ip>:<target/path/to/transfer>

如果您需要有关sync的更多信息,请阅读this链接。

对于 Windows ,您可以使用rsync的Windows替代方案,例如cwrsync