Github动作:一项工作的效果会触发另一项吗?

时间:2020-11-06 21:48:29

标签: github continuous-integration github-actions

我想为node.js仓库定义以下工作流程:

  • 将新代码合并到package.json中的主AND版本中后,请为该版本创建一个新的Github版本。
  • 创建新的Github版本后,将软件包发布到NPM

我希望实现的是,在我们最典型的工作流程(PR合并到主流程)中,创建的发行版和程序包会自动上传到NPM,但也能够直接从功能分支触发上传到NPM(通常是通过从此类分支手动创建发行版来创建预发行版本1.0.3-rc1。

我已经建立了两个Github工作流程,每个工作流程只有一个工作。 第一个:

name: Create release on new version merge
on:
  push:
    branches:
    - master
jobs:
  release-on-new-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Check for version change
        id: check
        uses: EndBug/version-check@v1
        with:
          file-url: ::before
          static-checking: localIsNew
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Log when changed
        if: steps.check.outputs.changed == 'true'
        run: 'echo "Version change found: ${{ steps.check.outputs.version }}"'
      - name: Create Release
        if: steps.check.outputs.changed == 'true'
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: v${{ steps.check.outputs.version }}
          release_name: v${{ steps.check.outputs.version }}...

第二个:

name: Publish on new release

on:
  release:
    types: created

jobs:
  publish-on-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 10
          registry-url: https://registry.npmjs.org/
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.npm_token}}

这些工作流分别按预期工作:当我将一些工作合并到可更改版本号的master上时,会创建一个发行版,而当我手动创建一个发行版时,它会发布到NPM中。但是,我也希望第一个工作流的效果所创建的版本能够触发第二个流程,因此,当我将版本更改合并到主版本中时,最终会自动将其发布到NPM。但令我惊讶的是,这没有发生。是否存在某种机制可以阻止一项工作(间接)触发另一项工作的效果?还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用needs明确提及一个作业需要另一个作业的依赖关系。

您可以看到该方法的说明:

来自“ GitHub Actions: Dependent Jobs(也是Edward Thomson)的on Stack Overflow

这将允许定义第三个动作,该动作需要前两个动作,从而迫使它们在执行时被束缚起来。