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

如何用相似但不同的Git标签触发对应Github Actions工作流

用特定Git标签分别触发GitHub Actions生产与预发布部署

问题背景

现有两个GitHub Action分别负责生产版本和预发布版本的发布,当前配置为:

  • 生产部署:推送v*格式标签时触发
name: Deploy production

on:
  push:
    tags:
      - 'v*'
  • 预发布部署:向develop分支推送提交时触发
name: Deploy staging

on:
  push:
    branches:
      - develop

现需调整为通过特定格式的Git标签分别触发两个Action:

  • 生产环境标签:匹配v0.0.0至v99.99.99,对应正则/^v\d{1,2}\.\d{1,2}\.\d{1,2}/i
  • 预发布环境标签:匹配v0.0.0-rc.0至v99.99.99-rc.99,对应正则/^v\d{1,2}\.\d{1,2}\.\d{1,2}-rc\.\d{1,2}/i

自行尝试的配置存在问题,求正确实现方案。

正确配置方案

GitHub Actions的on.push.tags使用glob通配符模式而非标准正则,且需注意:若on.push下同时配置branches和tags,会触发逻辑AND(需同时满足分支推送和标签推送才会执行),这不符合需求,因此需移除分支配置,仅保留标签匹配规则。

生产环境Action配置

匹配vX.Y.Z格式标签(X/Y/Z为1-2位数字):

name: Deploy production

on:
  push:
    tags:
      - 'v[0-9][0-9]?.[0-9][0-9]?.[0-9][0-9]?'
  • [0-9][0-9]?表示匹配1位或2位数字,刚好覆盖0-99的范围
  • 无需分支配置,只要推送符合格式的标签就会触发生产部署

预发布环境Action配置

匹配vX.Y.Z-rc.N格式标签(X/Y/Z/N为1-2位数字):

name: Deploy staging

on:
  push:
    tags:
      - 'v[0-9][0-9]?.[0-9][0-9]?.[0-9][0-9]?-rc.[0-9][0-9]?'
  • 同样用[0-9][0-9]?限制数字位数,确保仅匹配符合要求的预发布标签
  • 注意Action名称需对应为Deploy staging,避免和生产配置混淆

关键提示

  • 避免同时在on.push下配置branches和tags,否则会导致触发条件过于严格
  • GitHub Actions的glob模式不支持正则的{1,2}语法,需用[0-9][0-9]?实现1-2位数字的匹配
  • 上述配置为精确格式匹配,不会误触发带额外后缀的标签(如v1.2.3-beta不会触发生产部署)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:56:24