我想构建一个在拉取请求 (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'
Run Code Online (Sandbox Code Playgroud)
[参考:https://github.community/t/github-actions-manual-trigger-approvals]
但是,该build作业在批准时触发,并且似乎忽略了该路径。无论 PR 中修改了哪些文件,构建都会在任何批准后运行。
是否只有当 PR 修改特定路径并获得批准时才可以触发 GitHub Action?
我知道fuzzi找到了使用另一种带有标签的解决方案的替代方案,但如果有人想解决保留原始前提的问题,这是我的贡献:
触发ON条件的工作方式为OR和 不为AND。因此,在问题示例中,当 apull_request_review是submitted OR时,当更新的文件之一path是通知的文件时,工作流程将触发。
无法on仅通过工作流程级别字段检查这两个条件(还?)。
因此,如果您想检查这两个条件,则必须单独进行。
解决方案可能是首先检查触发器submitted中的 PR ON,然后检查作业步骤中的文件夹路径。
以下是上面建议的解决方案使用paths-changes-filter操作的示例:
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: ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10320 次 |
| 最近记录: |