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

How to trigger a pipeline when a submodule changes?

我有几个使用相同子模块的存储库。有没有办法在子模块的源更改时自动将这些存储库设置为 运行 管道?

例如,如果我在父仓库上推送一些东西,我希望它自动将更改通知给所有使用它作为子模块的仓库,该更改已经发生并且它们的管道需要 运行 .

GitLab 中有一个名为 multi-project pipeline 的功能可以触发存储库之间的构建,但仅限于 Premium 和 Silver 版本:

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

你可以得到一些东西来处理这个。你只需要记住,仅仅因为你将新的更改推送到你的子模块,使用这个子模块的存储库就不会更新。他们仍然和以前一样提交。

如果你真的想,你当然可以做任何你想做的事。如果你有一台可以设置 gitlab runner 的服务器,你可以这样做:

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

此作业然后可以手动检查您的依赖项目,找到子模块,将它们更新到最新版本,然后提交这些更改。这些更改的作者将是 RoboGit,并且这些更改将触发这些存储库中的构建作业。您会得到类似于您在问题中描述的内容。