Gitlab - 如何允许多项目管道在触发器回购中创建分支
Gitlab - how to allow multi project pipelines to create a branch in trigger repo
我有一个回购 A
(上游)和一个回购 B
(下游)。在 repo A
中完成一些作业后;我想在 repo B
中触发一些工作。我能够做到这一点。
trigger_repo_B:
stage: trigger_repo_B
trigger:
project: test/repo_B
我无法弄清楚的是 - 如何为回购 B 中不存在的分支触发回购 B 作业。例如,我可以为特定分支触发回购 B 中的作业 C
如果 C
存在但如果 C
不存在则管道处于 pending
状态。如果分支 C
不存在,我希望能够在 B
中创建一个分支,然后 运行 在 B
中创建作业。
trigger_repo_B:
stage: trigger_repo_B
trigger:
project: test/repo_B
branch: C
有什么想法吗?我能想到它工作的唯一方法是做一个 before_script
,在 B
中触发管道之前,我克隆 repo 并创建一个分支
不是在触发器配置中列出分支名称,而是传递一个变量,其中值是您要创建的分支。然后在您的下游管道中,您可以在检查变量是否存在的所有其他内容之前向 运行 添加一个阶段和作业。如果没有,只需 exit 0
并让管道照常继续。但如果已设置,则创建分支,然后继续。
可能看起来像这样:
#repo_A .gitlab-ci.yml
stages:
- trigger_repo_B
trigger:
stage: trigger_repo_B
variables:
BRANCH_TO_CREATE: branch_name
trigger:
- project: test/repo_B
#repo_B .gitlab-ci.yml
stages:
- prep_work
- build
Create Branch:
stage: prep_work
script:
- if [ -z ${BRANCH_TO_CREATE+x} ]; then git checkout -b $BRANCH_TO_CREATE; fi
# see to explain the conditional above
Build:
stage: build
script:
- ...
我有一个回购 A
(上游)和一个回购 B
(下游)。在 repo A
中完成一些作业后;我想在 repo B
中触发一些工作。我能够做到这一点。
trigger_repo_B:
stage: trigger_repo_B
trigger:
project: test/repo_B
我无法弄清楚的是 - 如何为回购 B 中不存在的分支触发回购 B 作业。例如,我可以为特定分支触发回购 B 中的作业 C
如果 C
存在但如果 C
不存在则管道处于 pending
状态。如果分支 C
不存在,我希望能够在 B
中创建一个分支,然后 运行 在 B
中创建作业。
trigger_repo_B:
stage: trigger_repo_B
trigger:
project: test/repo_B
branch: C
有什么想法吗?我能想到它工作的唯一方法是做一个 before_script
,在 B
不是在触发器配置中列出分支名称,而是传递一个变量,其中值是您要创建的分支。然后在您的下游管道中,您可以在检查变量是否存在的所有其他内容之前向 运行 添加一个阶段和作业。如果没有,只需 exit 0
并让管道照常继续。但如果已设置,则创建分支,然后继续。
可能看起来像这样:
#repo_A .gitlab-ci.yml
stages:
- trigger_repo_B
trigger:
stage: trigger_repo_B
variables:
BRANCH_TO_CREATE: branch_name
trigger:
- project: test/repo_B
#repo_B .gitlab-ci.yml
stages:
- prep_work
- build
Create Branch:
stage: prep_work
script:
- if [ -z ${BRANCH_TO_CREATE+x} ]; then git checkout -b $BRANCH_TO_CREATE; fi
# see to explain the conditional above
Build:
stage: build
script:
- ...