如何并行运行某些任务,并按顺序运行其他任务?

时间:2019-05-30 17:12:17

标签: gitlab gitlab-ci

我想并行运行某些CD / CI任务(例如,独立的docker构建),并依次运行其他一些任务(例如,一旦构建这些映像,注册表就会上传)。

documentation给出了默认情况下并行构建的独立任务的示例:

test:
  script: cat file1.txt file2.txt | grep -q 'Hello world'

package:
  script: cat file1.txt file2.txt | gzip > packaged.gz
  artifacts:
    paths:
    - packaged.gz

它们通过stages条目强制执行这些任务的顺序:

stages:
  - test
  - package

如何混合使用?,例如,让任务build_onebuild_two并行运行,然后(依次)运行package?类似于

stages:
  - build_one, build_two   # <-- these two run in parallel
  - package   # <-- this one runs only when both parallel tasks above completed successfully

1 个答案:

答案 0 :(得分:1)

可以为每个任务分配一个运行阶段,并按照定义的顺序依次运行各个阶段。如果将多个任务分配到同一阶段,则它们将在该阶段并行运行。

这是一个符合您要求的示例。这两个构建任务同时运行,然后打包任务随后运行:

before_script:
  - echo "do some runner environment prep"

stages:
  - build
  - package

build_task1:
  stage: build
  script:
    - echo "do build1 stuff"

build_task2:
  stage: build
  script:
    - echo "do build2 stuff"

package_task:
  stage: package
  script:
    - echo "do package stuff"

这是使用上面的管道定义成功运行的管道:

enter image description here