如何在提交给子模块的更改时触发jenkins的构建?

时间:2012-12-05 10:44:17

标签: git triggers jenkins

我们有一个带外部子模块的git存储库。我们必须在子模块更改时触发构建。您能否告诉我们如何使用xtrigger插件轮询子模块的更改。是否更好地使用shell脚本或监视文件或其他东西?


有关我们构建的更多信息。 步骤1。使用子模块克隆根存储库 第2步。为每个子模块执行作业 步骤#2.1(在子模块中)。切换到正确的分支(例如,主) 步骤#2.1(在子模块中)。拉出子模块的最新资源

现在如果有人提交到根存储库,jenkins会为应用程序启动构建 但是如果有人提交任何子模块库,jenkins就不会启动任何东西

我们需要针对第二种情况的解决方案。在最好的情况下,它应该通过标准的jenkins功能或通过开源插件来完成。

1 个答案:

答案 0 :(得分:7)

当git存储库有子模块时,它指向该子模块中的特定提交(比如commit A)。因此,即使子模块发生更改并且现在已将B提交为A的子级,您的顶级存储库仍然指向提交A。您必须显式更新顶级存储库以指向子模块中的commit B,它不会自动发生。

鉴于此,您的问题的答案是,只需更新您的顶级存储库以指向新提交B。这将导致您的存储库中的更改应该像通常那样触发Jenkins构建,这将从子模块中获取新的提交B

-

鉴于额外的信息,我会添加一个监视子模块存储库的Jenkins作业。当子模块更改时,执行任何子模块特定的测试,然后作为后期构建步骤触发主存储库作业。