出处:https://segmentfault.com/a/1190000010442764#articleHeader8
- job 中的 stage,属于 stages 中的一个
- 相同stage的job可以平行执行,下一个stage的job会在前一个stage的job成功后开始执行
stages用来定义可以被job调用的stages。stages的规范允许有灵活的多级pipelines。
stages中的元素顺序决定了对应job的执行顺序:
- 相同stage的job可以平行执行。
- 下一个stage的job会在前一个stage的job成功后开始执行。
接下仔细看看这个例子,它包含了3个stage:
stages:
- build
- test
- deploy
- 首先,所有build的jobs都是并行执行的。
- 所有build的jobs执行成功后,test的jobs才会开始并行执行。
- 所有test的jobs执行成功,deploy的jobs才会开始并行执行。
- 所有的deploy的jobs执行成功,commit才会标记为success
- 任何一个前置的jobs失败了,commit会标记为failed并且下一个stages的jobs都不会执行。
这有两个特殊的例子值得一提:
- 如果.gitlab-ci.yml中没有定义stages,那么job's stages 会默认定义为 build,test 和 deploy。
- 如果一个job没有指定stage,那么这个任务会分配到test stage。