让我们以这个工作流为例,它有两个作业-构建和注释:
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:
[...]