You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab分支删除时,含when:manual的stop_job为何自动停止环境?

GitLab CI 分支删除时自动执行manual停止任务的机制解释

你遇到的这个情况是GitLab CI针对环境停止的特殊设计,和常规when:manual的行为规则不冲突,具体逻辑如下:

  1. 环境绑定的特殊触发逻辑
    当你在deploy_review任务的environment配置里指定了on_stop: stop_review,同时stop_review任务设置了environment: action: stop,GitLab会把这两个任务标记为「环境部署/停止配对任务」。

  2. 分支删除触发自动停止的例外规则
    常规场景下when:manual确实需要手动触发任务,但在分支删除、合并请求关闭这类GitLab认定的「环境需要自动清理」的场景中,GitLab会跳过when:manual的限制,自动创建一条专门的流水线来执行对应的stop_review任务。

  3. 设计目的
    这种配置是为了兼顾两种需求:

    • 日常测试时,你可以手动触发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:40:24