我想为node.js仓库定义以下工作流程:
我希望实现的是,在我们最典型的工作流程(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。但令我惊讶的是,这没有发生。是否存在某种机制可以阻止一项工作(间接)触发另一项工作的效果?还是我错过了什么?
答案 0 :(得分:0)
您可以考虑使用needs
明确提及一个作业需要另一个作业的依赖关系。
您可以看到该方法的说明:
来自“ GitHub Actions: Dependent Jobs(也是Edward Thomson)的on Stack Overflow”
这将允许定义第三个动作,该动作需要前两个动作,从而迫使它们在执行时被束缚起来。