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

Gitlab CI使用rules规则时如何实现except:tags效果避免标签触发流水线

问题原因与解决方案

你当前配置不生效的核心原因是规则优先级设置不合理,以及缺少全局流水线触发规则控制。按照以下步骤调整即可实现需求:

  1. 调整阶段规则顺序,优先匹配标签场景
    GitLab CI 的 rules 按照从上到下的顺序匹配,命中第一条符合条件的规则后就会终止后续判断。把标签阻断规则放到 rules 列表的最顶部,确保所有标签提交第一时间被拦截,避免被后续规则意外匹配。调整后的 deploy 阶段配置如下:
deploy:
  stage: deployment
  rules:
    - if: '$CI_COMMIT_TAG'
      when: never
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $sample == "one"'
      when: manual
    - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
      when: never
    - if: '$CI_COMMIT_BRANCH && $sample == "one"'
      when: manual
  script:
    - ...
    - ...
  1. 添加全局流水线触发规则(可选,符合原 except: - tags 全局效果)
    如果你需要的是创建标签时整个流水线都不触发,而不是仅跳过 deploy 阶段,需要在 .gitlab-ci.yml 根级别添加 workflow:rules 配置,全局控制流水线创建逻辑:
# 放在配置文件最顶部,全局生效
workflow:
  rules:
    - if: '$CI_COMMIT_TAG'
      when: never
    # 其余场景正常创建流水线,可根据自身需求修改其他全局规则
    - when: always

调整完成后,创建标签时要么整个流水线不会被触发,要么 deploy 阶段会被直接跳过,完全实现原有 except: - tags 的效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:06