子模块更改时如何触发管道?

时间:2019-10-29 10:03:37

标签: continuous-integration gitlab gitlab-ci git-submodules

我有一些使用相同子模块的存储库。有没有一种方法可以设置这些存储库以在其子模块的来源更改时自动运行管道?

例如,如果我在父存储库上推送某些内容,我希望它使用更改作为子模块自动将更改通知所有存储库,则更改已发生并且需要运行其管道。

1 个答案:

答案 0 :(得分:0)

GitLab中有一个称为multi-project pipeline的功能可以触发存储库之间的构建,但仅在高级版和白银版中:

https://docs.gitlab.com/ee/ci/multi_project_pipelines.html

您可以为此使用一些东西。您只需要记住,仅仅因为您将新更改推送到了子模块,使用该子模块的存储库就不会更新。他们仍然处于与以前相同的提交方式。

如果您确实愿意,您当然可以做任何您想做的事情。如果您有一台可以设置gitlab运行程序的服务器,则可以执行以下操作:

  • 创建一个新的GitLab用户RoboGit,可以访问该子模块和使用该子模块的存储库
  • 在服务器上安装并注册gitlab运行程序
  • 为子模块创建工作

然后,此作业可以手动检出您的从属项目,找到子模块,将其更新为最新版本,然后提交这些更改。这些更改的作者将为RoboGit,并且这些更改将触发这些存储库中的构建作业。您会得到与问题描述类似的东西。