如何使用 zuul、Gearman 和 Jenkins 处理 git 子模块的 parent 仓库?

How to process a git submodule's parent repo with zuul, Gearman and Jenkins?

使用了以下工具:

项目配置:

我想要实现的是,当通过 "child" 项目启动审查或合并构建时,也会启动具有完全相同更改的 "parent" 项目的构建。怎么样?

我目前正在修改以下内容,遗憾的是现在无法正常工作,因为我无法仅针对一个构建突然更改子模块的 url。 Zuul配置:

projects:
- name: parent
  review:
    - review-job

- name: child
  review:
    - review-job:
      - review-parent-with-change-of-child-job

(我跳过了合并部分,因为评论足以说明问题)

所以因为事实上,jenkins 中的典型 Zuul 作业只有一些 $ZUUL_URL/$ZUUL_PROJECT 配置和一个 link 到 Jenkinsfile 我必须写一个特殊的parent 的审核作业与 child 的更改。这最终只是 "parent"s master 分支的构建,其中子模块的更改来自 Zuul Merger 的存储库。

这就是问题所在,我从 Zuul Merger 的存储库中检出更改的唯一方法是更改​​ .git 模块文件中的 url。在我看来,这不是进行此类构建的明智方法,因此我正在寻找其他解决方案。由于关于 Zuul 和具有子模块的项目的文档几乎为零,我有点被困在这里。

我仍然会尝试以疯狂的方式实现这一点(尚未测试),但如果存在的话,我想尽快将其更改为更理智和安全的方式。

更改 .gitmodules 基本上是不行的。

但是你不需要改变它!起初我没有意识到这一点。

像这样在你的 Jenkins 文件中提取 Zuul 存储库就足够了:

sh '''
cd path/to/your/submodule
git pull $ZUUL_URL/$ZUUL_PROJECT +$ZUUL_REF:refs/heads/zuul
'''

并且您的子模块包含您要在构建中测试的更改。