能否仅在GitLab分支删除时触发流水线?
解决GitLab分支删除时自动触发清理流水线的方案
问题分析
你之前的配置存在两个核心问题:
when: manual强制要求手动触发,无法自动执行清理操作- 未精准匹配分支删除特定事件,导致清理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环境的停止动作,保持环境生命周期与分支同步
验证方式
- 执行
git push origin :test-branch删除分支,查看GitLab是否自动触发包含cleanup-my-stuff的流水线 - 合并MR时勾选「删除源分支」,确认合并完成后自动触发清理流水线
内容的提问来源于stack exchange,提问作者Wayne Werner
相关产品推荐
相关产品推荐

