GitLab CI:如何设置两个依赖管道并行运行?

rmb*_*chi 9 gitlab gitlab-ci

目前,我定义了一个包含 4 个不同阶段的管道来为我的项目构建依赖项:

stages:
  - dependencies-A
  - dependencies-B
  - dependencies-C
  - dependencies-D
  - build
Run Code Online (Sandbox Code Playgroud)

因此,管道中的作业现在运行如下:

A -> B -> C -> D -> build
Run Code Online (Sandbox Code Playgroud)

实际上,B 依赖于 A,D 依赖于 C。子管道A->BC->D独立的,我想并行运行这两个子管道,以加快构建速度。那么,这样:

A -> B \
         build
C -> D /
Run Code Online (Sandbox Code Playgroud)

这可能吗?

感谢您的热心帮助。

Mur*_*ati 11

如果您使用的 Gitlab 版本 > 12.2,您可以使用needs关键字创建有向无环图。

在这种情况下,您的 .gitlab-ci.yml 应如下所示:

成功完成后将在此处depB开始。和阶段depA也是如此。 阶段将在所有其他阶段完成后运行。 depCdepDbuild

stages:
  - dependencies-A-C
  - dependencies-B-D
  - build

depA:
  stage: dependencies-A-C

depB:
  stage: dependencies-B-D
  needs: ["depA"]

depC:
  stage: dependencies-A-C

depD:
  stage: ependencies-B-D
  needs: ["depC"]

build:
  stage: build
Run Code Online (Sandbox Code Playgroud)

在文档中查找更多信息:
https://docs.gitlab.com/ee/ci/directed_acirclic_graph/

https://docs.gitlab.com/ee/ci/yaml/README.html#needs