我想构建一个在拉取请求 (PR) 批准时触发的 GitHub 操作,但仅当 PR 包含对特定路径的修改时才触发。
目前,我有以下实现:
on:
pull_request_review:
types: [submitted]
paths: ['mypath/**']
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: job name
if: github.event.review.state == 'approved'
[参考:https://github.community/t/github-actions-manual-trigger-approvals]
但是,那build
作业在批准时触发,并且似乎忽略了路径。无论 PR 中修改了哪些文件,构建都会在任何批准后运行。
是否只有当 PR 修改特定路径并获得批准时才可以触发 GitHub Action?
I know fuzzi
找到了使用另一种带有标签的解决方案的替代方案,但如果有人想解决保留原始前提的问题,这是我的贡献:
Context
The ON
触发条件为OR
而不是作为AND
。因此,在问题示例中,工作流程将在以下情况下触发:pull_request_review
is submitted
OR当更新的文件之一path
是知情者。
解决方法
不可能通过以下方式检查这两个条件(还?)on
单独的工作流程级别字段。
因此,如果您想检查这两个条件,则必须单独进行。
解决方案可能是检查submitted
公关在ON
首先触发,然后检查作业步骤中的文件夹路径。
Example
这是上面建议的解决方案的示例,使用路径更改过滤器 https://github.com/dorny/paths-filter action:
on:
pull_request_review:
types: [submitted]
jobs:
build:
runs-on: self-hosted #or any other runner
steps:
- uses: actions/checkout@v2
- uses: dorny/paths-filter@v2
id: changes
with:
filters: |
mypath:
- 'mypath/**'
# run only if some file in 'src' folder was changed
- if: steps.changes.outputs.mypath == 'true' && github.event.review.state == 'approved'
run: ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)