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

能否仅在GitLab分支删除时触发流水线?

解决GitLab分支删除时自动触发清理流水线的方案

问题分析

你之前的配置存在两个核心问题:

  1. when: manual 强制要求手动触发,无法自动执行清理操作
  2. 未精准匹配分支删除特定事件,导致清理job出现在正常推送的流水线中,或仅在目标分支流水线里显示且需手动操作

正确配置方案

利用GitLab流水线变量精准匹配分支删除场景,同时设置自动触发:

cleanup-my-stuff:
  stage: deploy
  variables:
    GIT_STRATEGY: none  # 无需拉取代码,提升执行效率
  script:
    - echo "开始清理已删除分支 $CI_COMMIT_REF_NAME 的关联资源"
    # 在此添加实际清理命令,比如删除对应测试环境、清理缓存等
  environment:
    name: review/$CI_COMMIT_REF_NAME
    action: stop  # 标记为停止对应review环境的动作
  rules:
    # 匹配分支删除事件:合并后删除或git push删除分支均会触发
    - if: '$CI_COMMIT_BRANCH == null && $CI_COMMIT_REF_TYPE == "branch"'
      when: always  # 满足条件时自动执行,无需手动触发
    # 排除正常分支推送的流水线,避免清理job不必要出现
    - if: '$CI_COMMIT_BRANCH != null'
      when: never

配置说明

  • $CI_COMMIT_BRANCH == null: 分支被删除时该变量为空,正常推送分支时此变量会有分支名取值
  • $CI_COMMIT_REF_TYPE == "branch": 确保只响应分支删除事件,排除标签删除等其他场景
  • when: always: 满足规则时自动执行清理流程,无需手动干预
  • environment.action: stop: 关联对应review环境的停止动作,保持环境生命周期与分支同步

验证方式

  1. 执行 git push origin :test-branch 删除分支,查看GitLab是否自动触发包含cleanup-my-stuff的流水线
  2. 合并MR时勾选「删除源分支」,确认合并完成后自动触发清理流水线

内容的提问来源于stack exchange,提问作者Wayne Werner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:42:12