首页/开发/CI/CD 与发布速查/标签发布流水线(Tag Pipeline)
流水线设计54 条

标签发布流水线(Tag Pipeline)

以版本标签作为发布入口:标签不可移动,天然适合绑定制品与发布记录,配合保护标签限制创建权限。

CI/CD 与发布速查开发更新于 2026-10-13

标签发布流水线是什么

以版本标签作为发布入口:标签不可移动(语义上不应被删除重建),天然适合绑定制品与发布记录,配合保护标签限制创建权限,让发布入口成为受控动作。触发方式:推送符合约定的标签(如 v1.8.0)自动进入发布流水线,产物与提交、标签一一对应。与分支发布相比,标签发布解决了分支头持续移动、无法精确指认发布内容的问题。

基本信息

触发推送符合约定的标签(如 v1.8.0)
产物按标签生成版本号并打制品与镜像标签
溯源制品与提交、标签一一对应
保护保护标签限制谁能创建与删除
校验用正则校验命名格式,拒绝随意标签进入发布

典型使用场景

  • 正式版本发布:标签触发构建、发布制品并生成发布说明。
  • 预发布通道:预发布标签走同一条管道但标记为非正式版本。
  • 溯源审计:制品版本、标签与提交三方对齐可查。
  • 统一入口:禁止从分支直接产出正式版本,全部走标签。
  • 多组件仓库:各组件用标签前缀区分,避免互相触发。
  • 回滚指认:回滚目标就是上一个标签对应的制品。

GitLab 标签规则

GitLab 标签规则
release:
  rules:
    - if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
  script: ./ci/release.sh

GitHub 标签触发

GitHub 标签触发
on:
  push:
    tags: ['v*.*.*']
标签可以删除重建造成歧义:用保护标签限制谁能创建与删除,发布入口才真正受控。
标签发布与回滚策略配套:回滚就是重新部署上一标签的制品,前提是制品不可变。
标签触发的流水线里变量环境与分支不同:分支相关变量可能为空,条件判断要针对标签场景单独设计。

易错点

  • 用分支代替标签发布:分支头持续移动,无法精确指认发布了哪个版本。
  • 标签命名随意(格式与后缀混用):发布脚本难以稳定解析,应先约定并校验格式。
  • 删除重建同名标签:语义歧义,旧制品与该标签的绑定关系失效。
  • 标签权限不设防:任何人都能推标签触发发布,应加保护规则与权限控制。
  • 在标签流水线里复用依赖分支变量的条件:变量不存在导致作业被跳过或行为相反。

数据来源与参考

  • GitLab Docs《Pipeline for a tag》
  • GitHub Docs《Events that trigger workflows》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌