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

如何仅在主分支创建标签时运行GitLab-CI发布任务?

GitLab-CI 主分支标签触发发布任务的正确配置
  • 你的规则失效的核心原因:GitLab在标签流水线中不会设置$CI_COMMIT_BRANCH变量,所以$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH这个条件永远无法满足,导致流水线无法触发。

  • 以下是几种可行的解决方案:

方案1:严格校验标签来自主分支(最准确)

先触发所有标签流水线,再在脚本中验证当前标签对应的提交是否存在于主分支:

rules:
  - if: $CI_COMMIT_TAG
    script:
      # 拉取主分支最新代码
      - git fetch origin $CI_DEFAULT_BRANCH
      # 检查当前标签的提交是否属于主分支,不属于则直接终止
      - git branch --contains $CI_COMMIT_SHA | grep -q $CI_DEFAULT_BRANCH || exit 1
      # 在此处编写你的发布操作命令

方案2:利用受保护分支特性(适合主分支为受保护分支的场景)

如果主分支是受保护分支,且仅允许从受保护分支创建的标签触发发布,可使用此规则:

rules:
  - if: $CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"
    script:
      # 在此处编写你的发布操作命令

方案3:通过标签前缀过滤(适合有统一标签规范的场景)

如果发布标签有固定前缀(如v1.0.0这类以v开头的版本标签),可直接匹配前缀:

rules:
  - if: $CI_COMMIT_TAG =~ /^v/
    script:
      # 在此处编写你的发布操作命令

注意:若必须确保标签一定从主分支创建,优先选择方案1,方案2和3可能存在边缘触发的情况(比如方案2中其他受保护分支创建的标签也会触发流水线)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:12:20