我想并行运行某些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_one
和build_two
并行运行,然后(依次)运行package
?类似于
stages:
- build_one, build_two # <-- these two run in parallel
- package # <-- this one runs only when both parallel tasks above completed successfully
答案 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"
这是使用上面的管道定义成功运行的管道: