Github 创建版本和发布版本之间的操作不同
Github Action different between release created and published
因为 Github Releases 实际上是一个 Git Tags,我想自动在有新版本(和标签)时升级我的 package.json
版本,使用 Github Action.
我知道我需要触发一个job
on: release
,但是根据Github Actions docs我不知道我是否需要在created
时触发,published
,两者还是全部?
Git集线器说:
Note: The release
event is not triggered for draft
releases.
并且我创建了两个管道:一个 on: release, type: created
和一个 on: release, type: published
。
然后我 创建了 一个 draft
版本,然后我 发布了 它。
只有 published
管道被触发,而且是在我 发布 发布时触发的。
可以创建但不能发布版本。 草稿 版本就是这种情况。
我建议使用 published
类型的版本。
我的经历与所描述的相反here on the forum。测试时:
- 如果发布是从
/releases
页面上的 "Draft a new release" 按钮创建的,随着发布从状态 "draft" 变为 "published",这两个事件都会触发。
- 如果发布是由
release-it
这样的脚本创建的,绕过"draft"阶段直接变成"published",只有release:published
会触发
显然,无需创建即可发布版本。确实很奇怪。我会选择 published
。
如果您试图将 Github 操作触发的发布的创建和发布捕获到另一个工作流程中,那么它是行不通的。
解决方案是将两个工作流程统一为一个工作流程,以便在创建发布后继续下一个工作流程。
来源:https://twitter.com/ethomson/status/1183838077166477316
示例:
name: Create Release and Publish
# Trigger the create release workflow
on:
push:
tags:
- 'v*'
jobs:
release:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
publish-gpr:
needs: release # After release is created then run the second workflow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 10
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
因为 Github Releases 实际上是一个 Git Tags,我想自动在有新版本(和标签)时升级我的 package.json
版本,使用 Github Action.
我知道我需要触发一个job
on: release
,但是根据Github Actions docs我不知道我是否需要在created
时触发,published
,两者还是全部?
Git集线器说:
Note: The
release
event is not triggered fordraft
releases.
并且我创建了两个管道:一个 on: release, type: created
和一个 on: release, type: published
。
然后我 创建了 一个 draft
版本,然后我 发布了 它。
只有 published
管道被触发,而且是在我 发布 发布时触发的。
可以创建但不能发布版本。 草稿 版本就是这种情况。
我建议使用 published
类型的版本。
我的经历与所描述的相反here on the forum。测试时:
- 如果发布是从
/releases
页面上的 "Draft a new release" 按钮创建的,随着发布从状态 "draft" 变为 "published",这两个事件都会触发。 - 如果发布是由
release-it
这样的脚本创建的,绕过"draft"阶段直接变成"published",只有release:published
会触发
显然,无需创建即可发布版本。确实很奇怪。我会选择 published
。
如果您试图将 Github 操作触发的发布的创建和发布捕获到另一个工作流程中,那么它是行不通的。
解决方案是将两个工作流程统一为一个工作流程,以便在创建发布后继续下一个工作流程。
来源:https://twitter.com/ethomson/status/1183838077166477316
示例:
name: Create Release and Publish
# Trigger the create release workflow
on:
push:
tags:
- 'v*'
jobs:
release:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
publish-gpr:
needs: release # After release is created then run the second workflow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 10
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}