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

Gitlab 如何并行运行某些任务,而按顺序运行其他任务?,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我希望并行运行一些CD/CI任务(例如,独立docker构建),并按顺序运行一些其他任务(例如,在构建这些映像之后,这些映像的注册表上载) 提供了默认情况下并行构建的独立任务的示例: test: script: cat file1.txt file2.txt | grep -q 'Hello world' package: script: cat file1.txt file2.txt | gzip > packaged.gz artifacts: paths:

我希望并行运行一些CD/CI任务(例如,独立docker构建),并按顺序运行一些其他任务(例如,在构建这些映像之后,这些映像的注册表上载)

提供了默认情况下并行构建的独立任务的示例:

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:
  - test
  - package
如何将两者混合使用?让任务
构建一个
构建二个
并行运行,然后(按顺序)
打包
?类似于

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

-build_one、build_two可以为每个任务分配一个要运行的阶段,阶段按照定义的顺序顺序运行。如果将多个任务分配给同一阶段,则它们将在该阶段并行运行

下面是一个符合您需求的示例。两个生成任务同时运行,然后包任务随后运行:

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"
下面是使用上述管道定义成功运行的管道:


谢谢。我没有想到这些任务被标记为它们所属的阶段(我一直在寻找完全相反的运行方式)