每当拉取请求被合并到主分支时,我都会调用Github操作工作流来创建一个新标记
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 # checks if conventional commit would cause a new 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}}
这个工作流按预期工作。我想创建第二个工作流,每当创建新标记时,它就会触发。它应该构建应用程序并在Github上发布二进制文件。我从
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
# I think this step makes sense to ensure the build always matches the git tag
- name: Checkout new tag
run: git checkout ${{ github.ref_name }}
- name: Next step
run: echo "next ..."
不幸的是,这个工作流从来没有运行过,所以它似乎没有触发。当我在Github上做了一个更改,然后用
专长:改变
次要版本会增加,因此会创建一个新标签。但这不会触发之后的第二个工作流。
出什么事了还是我错过了什么?
1条答案
按热度按时间ctehm74n1#
要了解发生的情况:当您在Github Action工作流中进行推送而不通知任何令牌时,
GITHUB_TOKEN
将用作默认值。然而,根据Github官方文件
使用存储库的
GITHUB_TOKEN
执行任务时,由GITHUB_TOKEN
触发的事件(workflow_dispatch和repository_dispatch除外)不会创建新的工作流运行。这可防止意外创建递归工作流运行。解决方案建议如下:
如果确实要从工作流运行中触发工作流,可以使用个人访问令牌而不是
GITHUB_TOKEN
来触发需要令牌的事件。您需要创建个人访问令牌并将其存储为机密。Here is how to create a Personal Access Token (PAT)
因此,在您的情况下,应该创建PAT并在工作流中使用它。
当使用
actions/checkout
通知PAT时,PAT应该为同一作业中的其他步骤保留,因此在第一个工作流中使用以下实现应该可以解决这个问题。