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

如何配置GitLab CI仅在符合语义化版本的新标签触发且限定分支

配置GitLab CI流水线仅在指定分支的合法语义化标签触发

关于语义化标签的正则选择

  • 你写的/[0-9]+\.[0-9]+\.[0-9]+.*/完全能用,只要团队里的标签不会出现离谱的格式(比如1.0.3-或者2.1.4_abc这类)。它的优点是简单易懂,维护成本低,能覆盖你提到的1.0.2、0.2.3-rc.1、2.3.5-beta这些常见场景。
  • 那个复杂的正则是严格遵循语义化版本2.0规范的,能精准匹配带预发布版本(比如-rc.1)和构建元数据(比如+build.123)的标签,还能过滤掉不符合规范的无效标签。如果你们团队需要严格管控标签格式,防止错误标签触发流水线,就用这个;如果标签都是人工规范创建的,简单版正则足够。

同时满足分支和标签条件的配置

GitLab CI的only默认是逻辑或关系,要实现「分支是master/main 且 标签符合正则」的逻辑,推荐两种写法:

方式1:用rules(更灵活,推荐)

rules:
  - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/ && ($CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "main")'
    when: always
  - when: never

这里把复杂正则做了简化,保留核心匹配规则的同时,兼容常见的预发布后缀格式。

方式2:用only关键字(写法简洁)

only:
  refs:
    - master
    - main
  variables:
    - $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+.*/ # 这里可替换为你选择的复杂正则

refs限定触发分支,variables限定标签格式,两者为逻辑与关系,只有同时满足才会触发流水线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:24:27