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

GitLab Pipeline中CI_COMMIT_BRANCH存在时CI_COMMIT_TAG为何为空?

GitLab CI变量互斥问题解析

这是因为GitLab CI的分支推送流水线和标签流水线是两种完全独立的触发场景,变量上下文完全不重叠:

  • 分支推送流水线:当你往仓库推送分支提交时触发,这类流水线只和分支上的提交绑定。此时GitLab不会加载标签相关的上下文,所以CI_COMMIT_TAG变量根本不存在,只有CI_COMMIT_BRANCH会被设为当前推送的分支名(比如main)。

  • 标签流水线:当你用git push --tags命令或者GitLab界面创建标签时触发,这类流水线只和标签指向的特定提交绑定。因为标签本身可以脱离分支存在(一个标签能指向任意提交,不一定属于某个分支),GitLab触发标签流水线时不会关联具体分支,所以CI_COMMIT_BRANCH变量不存在,只有CI_COMMIT_TAG会被设为当前的标签名。

你写的规则里同时要求CI_COMMIT_BRANCH == "main"和CI_COMMIT_TAG存在,这种情况永远不会发生——这两个变量属于完全不同的流水线场景,不可能同时出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:52:38