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

推送新标签后GitHub Actions工作流未触发,如何解决?

问题:标签推送后GitHub Actions工作流未触发

每当拉取请求(PR)合并到main分支时,我使用以下工作流创建新标签,该工作流运行正常:

name: Create new tag on push on main branch

on:
  push:
    branches:
      - 'main'

permissions:
  contents: write

jobs:
  create-new-tag:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Get next version # 检查规范提交是否会导致版本更新
        id: get_next_version
        uses: thenativeweb/get-next-version@2.5.0

      - name: Create new tag
        if: ${{ steps.get_next_version.outputs.hasNextVersion == 'true' }}
        run: |
          git tag ${{steps.get_next_version.outputs.version}}
          git push origin ${{steps.get_next_version.outputs.version}}

我希望创建第二个工作流,在新标签推送时触发,用于构建应用并发布二进制文件,工作流代码如下:

name: Release binaries for new tag

on:
  push:
    tags:
      - '*'

jobs:
  release-binaries:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      # 该步骤用于确保构建与git标签匹配
      - name: Checkout new tag
        run: git checkout ${{ github.ref_name }}

      - name: Next step
        run: echo "next ..."

但第二个工作流从未触发:提交feat: a change到main分支后,版本会升级并生成新标签,但不会触发第二个工作流。请问问题出在哪?


核心原因

第一个工作流使用GitHub默认的GITHUB_TOKEN推送标签时,GitHub会触发安全限制,阻止该操作触发其他工作流(防止无限循环执行),因此第二个监听标签推送的工作流无法被触发。

解决方案

方法1:使用Personal Access Token(PAT)推送标签

这是最可靠的解决方案:

  1. 在GitHub账号的「Settings > Developer settings > Personal access tokens」页面,创建一个带有repo权限的PAT。
  2. 将该PAT添加到仓库的Secrets中,命名为REPO_PAT。
  3. 修改第一个工作流的「Create new tag」步骤,使用PAT进行推送:
- name: Create new tag
  if: ${{ steps.get_next_version.outputs.hasNextVersion == 'true' }}
  run: |
    git tag ${{steps.get_next_version.outputs.version}}
    git push https://${{ secrets.REPO_PAT }}@github.com/${{ github.repository }}.git ${{steps.get_next_version.outputs.version}}

方法2:调整仓库Actions设置(部分场景适用)

在仓库的「Settings > Actions > General」页面:

  • 将「Workflow permissions」设置为「Read and write permissions」。
  • 勾选「Allow GitHub Actions to create and approve pull requests」(部分GitHub版本中为类似的“允许工作流触发其他工作流”选项)。
    注意:该方法在公共仓库中可能受GitHub安全策略限制,优先推荐方法1。

额外检查点

  1. 确保第二个工作流文件存放在仓库的.github/workflows/目录下,后缀为.yaml或.yml。
  2. 标签触发规则tags: ['*']可正常匹配所有标签,若你的标签是语义化版本(如v1.0.0),可改为tags: ['v*']以更精准匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:05:33