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

时间:2019-11-29 14:54:40

标签: gitlab gitlab-ci

目前,我有一个定义了4个不同阶段的管道来为我的项目建立依赖关系:

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

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

A -> B -> C -> D -> build

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

A -> B \
         build
C -> D /

那有可能吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

在这种情况下,您的.gitlab-ci.yml应该看起来像这样:

depB将在depA成功完成之后开始。 depCdepD阶段也是如此。 build阶段将在所有其他阶段完成之后运行。

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

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

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