Gitlab 如何并行运行某些任务,而按顺序运行其他任务?
我希望并行运行一些CD/CI任务(例如,独立docker构建),并按顺序运行一些其他任务(例如,在构建这些映像之后,这些映像的注册表上载) 提供了默认情况下并行构建的独立任务的示例: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:
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"
下面是使用上述管道定义成功运行的管道:
谢谢。我没有想到这些任务被标记为它们所属的阶段(我一直在寻找完全相反的运行方式)