11

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


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

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

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

4

1 回答 1

7

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

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

--

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

于 2012-12-05T13:28:00.273 回答