我正在配置Jenkins作业,以便将文件从Subversion上载到SFTP。通过SSH发布效果不错,但它可以上传每个版本上的所有文件。

对于某些项目,我们有成千上万个文件,并且上传时间超过1小时,因此这是不可行的。

任何人都可以建议仅上传上一个修订版本中更改过的文件的方法吗?

有帮助吗?

解决方案

您可以使用 Subversion插件来轮询SVN更改并运行一项无所作为的工作。我们称之为 YourPollingJob 。然后像这样通过http调用Jenkins API: 通用标签

其中BUILD_ID是您刚运行的作业的实际构建ID(通常的格式类似于2012-02-21_16-15-49)。检查结果。请注意,有关自上次构建以来已更改文件的所有信息均已存在-您只需将其解析即可。

现在,您可以执行以下操作: YourPollingJob 将调用另一个作业-我们将其称为 CopyJob -并将其BUILD_ID作为参数传递给它(通过参数化触发器插件;请确保调用 CopyJob 作为构建后步骤,而不是构建步骤)。然后, CopyJob 将通过http查询詹金斯(如上所述,最好的方法是通过wget进行查询),解析结果并进行复制。

您可以在一项工作中完成所有工作,但是这有点复杂且难以调试。

此外,每天(每晚)一次复制整个存储库可能是明智的选择。

其他提示

您可以将这些文件保存在单独的存储库中。听起来像是分散的VCS,例如mercurial或git可能是您最好的选择。您既可以在工作空间中进行设置,又可以添加构建步骤来提交更改的文件,然后将提交推送到要发布该文件的服务器上(只要您不消灭工作空间或建立在多个工作空间上,它就可以工作)机器)或添加其他步骤,以使用您保留它们的服务器中的工件克隆/拉回购。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top