我有一个在添加标签时触发的操作。
pull_request: types: [labeled]
仅当拉取请求获得批准(有一个或多个批准)并且另一个条件正常工作时,该作业才应该有条件地运行:
jobs:
build:
if: ${{ (something == 'approved') && (contains(github.event.pull_request.labels.*.name, 'Deployed for QA')) }}
Run Code Online (Sandbox Code Playgroud)
我可以使用什么属性来代替上述条件中的“某物”?
Gui*_*urd 10
您可以将 if:
github.event.review.state == 'approved'与您的其他条件一起使用。
实际上,LeadingMoominExpert的这一建议是可能解决方案的一部分。
我按照Dan Cookpull_request: types: [labeled]的问题建议尝试了这个实现,但它不起作用。
问题是因为当事件发生时,pull_request标记的事件没有github.event.review.state在 $GITHUB_CONTEXT 上填充字段,因此该值将为null并且条件将返回false。
为了使其正常工作,我必须将工作流触发on条件更改pull_request_review: types: [submitted]为而不是pull_request: types: [labeled]。
但行为与预期并不完全相同。
在这种情况下,仅当有人提交评论时才会触发该事件,并且如果拉取请求状态已获得批准并且已经具有预期标签,则将执行工作流的作业。
name: PR approved and labeled
on:
pull_request:
types: [labeled]
pull_request_review:
types: [submitted]
jobs:
build:
runs-on: ubuntu-latest
if: ${{ (github.event.review.state == 'approved') && (contains(github.event.pull_request.labels.*.name, 'test')) }}
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJSON(github) }}
run: echo "$GITHUB_CONTEXT"
- run: echo ${{ github.event.review.state }}
Run Code Online (Sandbox Code Playgroud)
您将看到添加标签(在这种情况下,包含test)不会执行该作业,但提交批准此 PR 的审核以及预期的标签集将运行该作业。
Dan,使用该事件还无法实现您想要实现的目标pull_request: types: [labeled]。
上面的示例是一种解决方法,但可能并不完全符合您的预期。
| 归档时间: |
|
| 查看次数: |
4815 次 |
| 最近记录: |