GitLab分支删除时,含when:manual的stop_job为何自动停止环境?
GitLab CI 分支删除时自动执行manual停止任务的机制解释
你遇到的这个情况是GitLab CI针对环境停止的特殊设计,和常规when:manual的行为规则不冲突,具体逻辑如下:
环境绑定的特殊触发逻辑
当你在deploy_review任务的environment配置里指定了on_stop: stop_review,同时stop_review任务设置了environment: action: stop,GitLab会把这两个任务标记为「环境部署/停止配对任务」。分支删除触发自动停止的例外规则
常规场景下when:manual确实需要手动触发任务,但在分支删除、合并请求关闭这类GitLab认定的「环境需要自动清理」的场景中,GitLab会跳过when:manual的限制,自动创建一条专门的流水线来执行对应的stop_review任务。设计目的
这种配置是为了兼顾两种需求:- 日常测试时,你可以手动触发
stop_review来提前关闭环境; - 分支生命周期结束(合并删除)时,自动完成环境清理,无需人工干预。
- 日常测试时,你可以手动触发
附上你的配置代码:
deploy_review: stage: deploy script: - echo "Deploy a review app" environment: name: review/$CI_COMMIT_REF_SLUG url: https://$CI_ENVIRONMENT_SLUG.example.com on_stop: stop_review stop_review: stage: deploy script: - echo "Remove review app" environment: name: review/$CI_COMMIT_REF_SLUG action: stop when: manual
内容的提问来源于stack exchange,提问作者clutchcarlos
相关产品推荐
相关产品推荐

