一尘不染

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

jenkins

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


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

现在,如果有人提交到根存储库,jenkins将启动该应用程序的构建,但是如果有人提交到任何子模块存储库,jenkins将不启动任何内容

对于第二种情况,我们需要解决方案。在最佳情况下,应通过标准的詹金斯功能或开源插件来完成。


阅读 550

收藏
2020-07-25

共1个答案

一尘不染

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

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

-

给定额外的信息,我将添加一个监视子模块存储库的Jenkins作业。当子模块发生更改时,请执行您要进行的任何子模块特定测试,然后在构建后步骤触发主存储库作业。

2020-07-25