【问题标题】:Trigger a GitHub action on pull request approval and path在拉取请求批准和路径上触发 GitHub 操作
【发布时间】:2022-01-23 01:54:29
【问题描述】:

我想构建一个在拉取请求 (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 中修改了哪些文件,构建都可以在任何 Approval 上运行。

是否只有在 PR 修改特定路径并获得批准时才可以触发 GitHub Action?

【问题讨论】:

  • ON 触发条件用作 OR 而不是 AND。因此,您的工作流程将在提交pull_request_review 时触发,OR 当更新的路径是通知的路径时。如果您想同时检查两者,则必须分别进行。例如,首先检查 ON 触发器中的提交,然后检查作业步骤中的文件夹路径(例如 this paths-changes-filter action)。
  • 感谢您的回答@GuiFalourd。

标签: github-actions


【解决方案1】:

我找到了一个使用 GitHub 标签而不是文件路径的解决方案。

我实现了一个 GitHub 操作,用于根据更新的文件路径自动将标签添加到 PR。 (https://github.com/actions/labeler)

然后我修改了现有的 GH 操作以检查标签值。我现在的情况是:

if: github.event.label.name == 'project' && github.event.review.state == 'approved'

【讨论】:

    【解决方案2】:

    我知道fuzzi 找到了使用另一种带有标签的解决方案的替代方案,但如果有人想解决保留原始前提的问题,这是我的贡献:

    上下文

    ON 触发条件作为 OR 而不是 AND。因此,在问题示例中,当pull_request_reviewsubmitted,当更新的文件之一path 是通知的文件时,工作流将触发。

    解决方法

    仅通过on 工作流级别字段无法检查这两个条件(还没有?)。

    因此,如果您想同时检查这两个条件,则必须分别进行。

    一种解决方案可能是首先检查ON 触发器中的submitted PR,然后在作业步骤中检查文件夹路径。

    示例

    以下是使用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: ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-21
      • 2020-01-30
      • 1970-01-01
      • 2022-10-02
      • 2018-06-02
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多