GitLab CI中手动运行前置作业后能否自动触发后续作业?
实现手动触发单元测试后自动部署的GitLab CI配置修改
要满足你“手动运行unit-test-job后自动执行deploy-job”的需求,只需通过GitLab CI的when、needs和rules配置实现关联与触发逻辑,具体修改如下:
关键配置说明
- 给
unit-test-job添加when: manual,强制该作业只能手动触发 - 给
deploy-job配置needs关联unit-test-job,确保部署作业仅在单元测试作业完成后才会执行 - 用
rules限制deploy-job仅当流水线由手动触发时运行(对应手动启动unit-test-job的场景)
修改后的完整配置
stages: - test - deploy unit-test-job: stage: test script: - echo "Running unit tests... This will take about 60 seconds." allow_failure: true when: manual # 设置为手动触发作业 deploy-job: stage: deploy environment: production script: - echo "Deploying application..." - echo "Application successfully deployed." needs: [unit-test-job] # 依赖unit-test-job完成 rules: - if: '$CI_PIPELINE_SOURCE == "web"' # 仅当流水线通过web界面手动触发时运行 when: on_success
配置完成后,只有当你手动启动unit-test-job后,deploy-job会在单元测试作业完成后自动执行;如果是代码推送等自动触发的流水线,deploy-job不会运行。
内容的提问来源于stack exchange,提问作者skanderf
相关产品推荐
相关产品推荐

