Gitlab 跨多个 repos 的持续集成
Gitlab continuous integration across multiple repos
我有一个基于 buildroot 的项目,它由两个 repos 组成:
- Buildroot 根,比方说项目 A
- 我们的包,项目B
我们托管了一个 Gitlab 服务器,我想为编译设置一个 CI/CD 作业。
我要设置的流程如下:
- 如果合并请求 (MR) 出现在 A/B -> 触发管道。
- 如果两个 MR 出现在两个 repos 上,引用相同的问题,间隔 15 分钟(这个计时器是为了给开发人员一些时间来为他的问题创建他的所有 MR)-> 触发一个可见的管道对于两位先生。
最后一点是我挣扎的地方。基本上,我想要的是一个独特的管道一期,这样如果两个回购协议都有针对这个特定问题的 MR,我的管道将在 A 和 B 的正确分支上检出然后为它启动编译。
我知道我可以在回购 A 上从 B 触发管道,但我不知道如何确保唯一如果创建了两个 MR,将启动管道。因为现在,据我所知,每个 MR 都会创建它的管道,而我最终会进行两次编译...
我考虑过将 buildbot 与 Gitlab 一起使用,但我更愿意只留在 Gitlab 上,因为它更容易维护,而不是为此使用许多不同的工具。
有没有人在 Gitlab 上遇到过这种问题and/or知道如何处理它?
提前致谢!
编辑
我遇到了 this page,这似乎是我的问题的确切解决方案,不幸的是,这似乎不在路线图上。
我将深入研究在 A 和 B 之上有一个元项目的提议,因为它可以让我用 Gitlab-CI, 即使这意味着创建这个项目并处理一个特殊的过程...
回答我自己的问题。
几天来我一直在尝试使用 buildbot
建立一个设置,但正如我所说,我真的不想添加另一个工具来管理(我的团队还没有为此做好准备, buildbot
做了太多我们现在不需要的事情。
我进入 this comment 这让我选择了以下方法。
Gitlab.example.com
A B *NEW Project 'C' only for CI/CD*
------\/------ ----------------\/--------------
- Trigger C with Key for the issue X, - Fetch/clone A and B for issue X
unless one already exists for issue X - Prepare the sources
- Wait for C to finish - Compile
- Report C's status (with URL to the
corresponding Pipeline)
这个设置是我能得到的最好的 Gitlab-only 解决方案。
如果有人对我使用的代码感兴趣,请告诉我,我会post 取样。
我有一个基于 buildroot 的项目,它由两个 repos 组成:
- Buildroot 根,比方说项目 A
- 我们的包,项目B
我们托管了一个 Gitlab 服务器,我想为编译设置一个 CI/CD 作业。
我要设置的流程如下:
- 如果合并请求 (MR) 出现在 A/B -> 触发管道。
- 如果两个 MR 出现在两个 repos 上,引用相同的问题,间隔 15 分钟(这个计时器是为了给开发人员一些时间来为他的问题创建他的所有 MR)-> 触发一个可见的管道对于两位先生。
最后一点是我挣扎的地方。基本上,我想要的是一个独特的管道一期,这样如果两个回购协议都有针对这个特定问题的 MR,我的管道将在 A 和 B 的正确分支上检出然后为它启动编译。
我知道我可以在回购 A 上从 B 触发管道,但我不知道如何确保唯一如果创建了两个 MR,将启动管道。因为现在,据我所知,每个 MR 都会创建它的管道,而我最终会进行两次编译...
我考虑过将 buildbot 与 Gitlab 一起使用,但我更愿意只留在 Gitlab 上,因为它更容易维护,而不是为此使用许多不同的工具。
有没有人在 Gitlab 上遇到过这种问题and/or知道如何处理它?
提前致谢!
编辑
我遇到了 this page,这似乎是我的问题的确切解决方案,不幸的是,这似乎不在路线图上。
我将深入研究在 A 和 B 之上有一个元项目的提议,因为它可以让我用 Gitlab-CI, 即使这意味着创建这个项目并处理一个特殊的过程...
回答我自己的问题。
几天来我一直在尝试使用 buildbot
建立一个设置,但正如我所说,我真的不想添加另一个工具来管理(我的团队还没有为此做好准备, buildbot
做了太多我们现在不需要的事情。
我进入 this comment 这让我选择了以下方法。
Gitlab.example.com
A B *NEW Project 'C' only for CI/CD*
------\/------ ----------------\/--------------
- Trigger C with Key for the issue X, - Fetch/clone A and B for issue X
unless one already exists for issue X - Prepare the sources
- Wait for C to finish - Compile
- Report C's status (with URL to the
corresponding Pipeline)
这个设置是我能得到的最好的 Gitlab-only 解决方案。
如果有人对我使用的代码感兴趣,请告诉我,我会post 取样。