You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何仅在推送新版本(含新标签)时触发GitHub Action?

如何仅在推送新标签时触发GitHub Action

完全可以做到!你只需要在GitHub Action的工作流配置文件里精准设置触发条件,就能实现只在推送新标签时运行Action,同时跳过master分支的普通代码推送,也不需要额外创建发布分支。

核心配置方法

在你的.github/workflows/目录下的YAML配置文件里,把on字段设置为仅监听带有特定格式标签的推送事件:

name: 仅标签触发的Action
on:
  push:
    # 匹配所有以v开头的标签,比如v1.0.0、v2.1.3-beta,可根据需求调整规则
    tags:
      - 'v*'
    # 明确排除master分支的推送(可选,让触发逻辑更严谨)
    branches-ignore:
      - 'master'

关键细节说明

  • 标签匹配规则tags: ['v*']会匹配所有以v开头的标签,如果你需要更严格的语义化版本匹配,可以改成['v[0-9]+.[0-9]+.[0-9]+'],避免误触发非版本类标签。
  • 排除分支推送:加上branches-ignore: ['master']后,就算有人同时推送标签和master分支代码,也只会触发一次Action,且单纯推送master分支时不会触发。
  • 测试验证:配置完成后,你可以用git tag v1.0.0 && git push origin v1.0.0推送一个新标签,此时Action会自动启动;而直接推送master分支代码,Action不会运行。

额外技巧:区分正式版与预发布标签

如果需要针对正式版标签(如v1.0.0)和预发布标签(如v1.0.0-beta)执行不同逻辑,可以用if条件判断:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 执行正式版发布逻辑
        if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-')
        run: echo "正在处理正式版本发布"
      - name: 执行预发布版逻辑
        if: startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-')
        run: echo "正在处理预发布版本发布"

这样就能根据标签格式灵活执行对应操作啦!

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

火山引擎 最新活动