GitLab CI配置:如何让任务B在任务A完成后自动启动?
实现GitLab CI中手动触发任务A后自动启动任务B的配置方案
我来帮你搞定这个需求!要实现手动触发任务A完成后自动启动任务B,核心是利用GitLab CI的needs关键字建立任务间的依赖关系,同时调整任务B的触发条件,具体配置如下:
stages: - test - build - deploy # 这里省略你已有的test、build阶段任务配置 A: stage: deploy when: manual script: - echo "Deploy A" only: - master B: stage: deploy needs: [A] # 声明任务B依赖任务A when: on_success # 当依赖的任务A成功完成时自动触发 script: - echo "Deploy B" only: - master
关键配置说明:
needs: [A]:这个关键字会让任务B和任务A建立依赖关系,GitLab CI会确保任务B只有在任务A执行完成后才会启动。即使两个任务都在deploy阶段,依赖关系也会让它们按顺序执行,而非并行。when: on_success:把任务B原来的manual触发改为on_success,意味着只要任务A手动触发并成功完成,任务B就会自动启动执行。如果任务A执行失败,任务B会被跳过。- 任务A依然保留
when: manual,所以它还是需要你手动去触发启动。
注意事项:
- 确保你的GitLab实例版本在12.0及以上(
needs关键字从这个版本开始支持,现在主流版本都满足)。 - 如果需要任务B在任务A失败时也执行,可以把
when改为always,不过通常部署场景下我们只希望A成功后再执行B。 - 在GitLab流水线页面中,当你手动启动任务A并完成后,任务B会自动进入执行状态,不需要再手动点击触发。
内容的提问来源于stack exchange,提问作者Yhprums
相关产品推荐
相关产品推荐

