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:
  - ...