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

如何在GitLab CI/CD中获取分支名称?Tag触发场景变量失效

解决Tag触发GitLab CI流水线获取分支名的问题

你的场景是Tag触发的流水线,此时GitLab默认不会填充$CI_COMMIT_BRANCH变量,$CI_COMMIT_REF_NAME返回的是Tag名称而非分支名。可以通过Git命令直接从仓库中查询Tag对应Commit关联的分支,具体实现如下:

修改后的CI配置

simple build :
  stage: build 
  script:
    # 获取当前Tag对应Commit所属的分支(取第一个匹配结果)
    - COMMIT_BRANCH=$(git branch --contains $CI_COMMIT_SHA | grep -v HEAD | sed 's/^\* //' | head -n 1)
    - echo "关联分支名称: $COMMIT_BRANCH"
  rules :
    - if: $CI_COMMIT_TAG    

命令细节解释

  • git branch --contains $CI_COMMIT_SHA:列出所有包含当前Tag对应Commit的分支(Tag绑定在某个Commit上,该Commit必然属于至少一个分支)
  • grep -v HEAD:过滤掉无关的HEAD引用结果
  • sed 's/^\* //':移除分支名前的* 标记(当前检出的分支会带有这个标记)
  • head -n 1:如果同一个Commit被多个分支包含,仅取第一个匹配的分支(可根据需求调整此逻辑)

额外说明

  • 确保CI运行环境已安装git、grep、sed工具,GitLab官方Runner镜像默认都包含这些工具
  • 如果你的Tag是在无分支的孤立Commit上创建的,此方法会找不到分支(但这种场景很少见)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:17:40