如何在GitLab CI中获取打标签对应的动态sprint发布分支名称
解决方案
你可以在job运行阶段通过Git命令直接查询当前触发pipeline的标签对应的关联分支,过滤得到符合release/XXXX.XX格式的分支名即可,具体实现步骤如下:
- 第一步:配置job的Git克隆策略,确保能拿到完整的分支和提交信息,在
.gitlab-ci.yml对应job中添加以下配置:
your-job-name: variables: # 关闭浅克隆,确保能获取全部分支引用 GIT_DEPTH: 0 script: # 同步远端所有分支信息到本地 - git fetch origin # 查询当前标签对应提交所属的release格式分支,赋值为变量 - RELEASE_BRANCH=$(git branch -r --contains $CI_COMMIT_SHA | grep -o 'origin/release/[0-9]\{4\}\.[0-9]\{2\}' | head -n 1 | sed 's/origin\///') # 后续可直接调用$RELEASE_BRANCH变量执行操作 - echo "当前对应发布分支为 $RELEASE_BRANCH"
- 第二步:多job复用变量配置。如果需要在多个job中使用该分支名,可以将变量写入dotenv文件传递给后续阶段的job:
your-job-name: artifacts: reports: dotenv: release.env script: # 上述查询逻辑不变 - echo "RELEASE_BRANCH=$RELEASE_BRANCH" > release.env
规则说明:标签触发pipeline时
CI_COMMIT_REF_NAME默认返回标签名是Gitlab CI的设计规则,因为标签本身也是一种Git引用,优先级高于分支,所以无法通过预置变量直接获取分支名,必须通过Git命令查询提交与分支的关联关系。
内容的提问来源于stack exchange,提问作者Sushil.R
相关产品推荐
相关产品推荐

