我有一个Jenkins工作,最后将整个工作区的文件传输到另一台服务器上,我将启动该应用程序。 我的应用程序是一个Ruby on Rails项目,所以我有很多不同的文件要传输。 当然不是每个文件都需要传输,因为它没有变化,但是SSH插件无论如何都会这样做。
是否有配置或其他插件我可以更改此行为? 对于包含更大文件的其他项目来说,这尤其有趣。
由于
答案 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。