发布创建和发布之间的 Github Action 不同

bar*_*iro 18 versioning git-tag npm package.json github-actions

由于Github Release s 实际上是一个Git Tag s,我想package.json在有新的 Release (和标签)时使用Github Action自动升级我的版本。

我知道我需要触发 a job on: release,但是根据Github Actions 文档,我不知道我是否需要触发 when createdpublished, both or all?

Github 说:

注意:发布release不会触发该事件draft

我创建了两个管道:一个on: release, type: created和一个on: release, type: published

然后我创建了一个draft版本,然后我发布了它。

只有published管道触发,而且是在我发布版本的时候。

Luc*_*cia 18

我的经历与论坛上描述的相反。测试时:

  • 如果发布是通过/releases页面上的“Draft a new release”按钮创建的,随着发布从状态“draft”变为“published”,这两个事件都将触发。
  • 如果发布是由脚本创建的release-it,绕过“草稿”阶段并直接“发布”,只会release:published触发

所以很明显,一个版本可以在没有创建的情况下发布。确实很奇怪。我会去的published


Luc*_*cio 13

如果您尝试将从 Github Action 触发的发布的创建和发布捕获到另一个工作流程中,那么它是行不通的。

解决方案是将两个工作流程统一为一个工作流程,以便在创建版本后继续下一个工作流程。

来源: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}}
Run Code Online (Sandbox Code Playgroud)