如何按作业而不是按工作流设置事件触发器



让我们以这个工作流为例,它有两个作业-构建注释

name: TestWorkflow
on:  
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Build code
run: |
whoami
./build
comment:
runs-on: self-hosted
needs: build
steps:
- uses: actions/github-script@v3
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'Test comment'
})

此工作流将在向master分支发出推送和打开拉取请求时触发。然而,当构建总是成功时,注释作业将在推送场景中失败,因为没有可注释的Pull Request。

是否可以为每个作业而不是每个工作流指定触发器?类似于:

name: TestWorkflow2
jobs:
build:
on:  
push:
branches: [ master ]
pull_request:
branches: [ master ]
...
comment:
on:  
pull_request:
branches: [ master ]
...

您可以使用if条件(引用(来阻止作业或步骤运行,除非满足条件。

例如,在这里,您可以将if: ${{ github.event_name == 'pull_request' }}添加到comment job中,以仅在触发工作流的事件是pull_request时执行它。

comment:
runs-on: self-hosted
needs: build
if: ${{ github.event_name == 'pull_request' }}
steps:
[...]

最新更新