提问人:fuzzi 提问时间:12/22/2021 更新时间:1/20/2023 访问量:8964
触发有关拉取请求批准和路径的 GitHub 操作
Trigger a GitHub action on pull request approval and path
问:
我想构建一个在拉取请求 (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]
但是,作业在审批时触发,并且似乎忽略了该路径。无论 PR 中修改了哪些文件,生成都会在任何 Approval 上运行。build
是否可能仅在 PR 修改特定路径并获得批准时触发 GitHub 操作?
答:
2赞
fuzzi
12/22/2021
#1
我找到了一个解决方案,改用 GitHub 标签,而不是文件路径。
我实现了一个 GitHub Action,用于根据更新的文件路径自动向 PR 添加标签。 (https://github.com/actions/labeler)
然后,我修改了现有的 GH 操作以检查标签值。我现在的情况是:
if: github.event.label.name == 'project' && github.event.review.state == 'approved'
9赞
GuiFalourd
12/22/2021
#2
我知道使用另一种带有标签的解决方案找到了替代方案,但如果有人想解决保留原始前提的问题问题,这是我的贡献:fuzzi
上下文
触发条件的工作方式为,而不是 。因此,在问题示例中,当 a 为 OR 时,当其中一个更新的文件是通知的文件时,工作流将触发。ON
OR
AND
pull_request_review
submitted
path
解决方法
仅通过工作流级别字段还无法检查这两个条件(还不能?on
因此,如果要检查这两个条件,则必须单独进行。
解决方案可能是先检查触发器中的 PR,然后在作业步骤中检查文件夹路径。submitted
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: ...
评论
0赞
Irfan Pathan
9/29/2022
这个 dorny/paths-filter@v2 不适用于pull_request_review事件,它仅适用于 pull_request / push 事件
评论
ON
pull_request_review