如何使用 zuul、Gearman 和 Jenkins 处理 git 子模块的 parent 仓库?
How to process a git submodule's parent repo with zuul, Gearman and Jenkins?
使用了以下工具:
- 格瑞特
- Openstack/Zuul
- 其中包括 Gearman
- Jenkins(管道作业)
项目配置:
- 项目 "parent" 作为 git 存储库。
- 项目 "child" 作为 git 存储库。
- "parent" 配置了 "child" 作为子模块。
- Zuul 为两个项目配置了 Gerrit 审核 zuul-pipeline 和 Gerrit 合并 zuul-pipeline。
我想要实现的是,当通过 "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
'''
并且您的子模块包含您要在构建中测试的更改。
使用了以下工具:
- 格瑞特
- Openstack/Zuul
- 其中包括 Gearman
- Jenkins(管道作业)
项目配置:
- 项目 "parent" 作为 git 存储库。
- 项目 "child" 作为 git 存储库。
- "parent" 配置了 "child" 作为子模块。
- Zuul 为两个项目配置了 Gerrit 审核 zuul-pipeline 和 Gerrit 合并 zuul-pipeline。
我想要实现的是,当通过 "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
'''
并且您的子模块包含您要在构建中测试的更改。