如何一键触发GitLab Pipeline所有阶段?无需逐个添加when:manual
你写的全局when:manual不生效是因为GitLab CI不支持全局设置这个属性——when是job级别的配置,只能针对单个job定义。下面给你两种符合需求的实现方式:
实现方案
方案1:让整个流水线手动触发(推荐)
如果你的需求是整个流水线必须手动点击才启动,启动后所有阶段自动依次执行,用workflow规则就能实现,不用给每个job加配置:
workflow: rules: - if: $CI_PIPELINE_SOURCE == 'web' # 仅允许手动(网页触发)启动流水线 when: always - when: never # 禁止其他触发方式(比如push、tag) stages: - test - deploy test: script: - echo "执行测试" deploy: script: - echo "执行部署"
这样配置后,只有你在GitLab网页上手动点击「运行流水线」,整个流水线才会启动,启动后test和deploy阶段会自动按顺序跑完,不用再手动确认每个阶段。
方案2:用模板统一配置手动触发(批量确认)
如果需要保留自动触发的可能,但所有job都需要手动确认才能执行,可以用extends定义一个通用模板,每个job继承它,避免重复写when:manual:
stages: - test - deploy # 定义手动触发模板 .manual_job: when: manual test: extends: .manual_job script: - echo "执行测试" deploy: extends: .manual_job script: - echo "执行部署"
这样所有继承了.manual_job的job都会变成手动触发状态,点击「运行流水线」后,你可以批量勾选所有待确认的job,一次性触发执行,不用逐个点击确认。
内容的提问来源于stack exchange,提问作者unknown
相关产品推荐
相关产品推荐

