在pull_request_review上触发时如何获取Pull Request的所有更改?

fuz*_*zzi 1 github-actions

我目前有一个 GitHub Action 会触发:

  pull_request_review:
    types: [submitted]
Run Code Online (Sandbox Code Playgroud)

然后我想运行一个命令,该命令需要拉取请求的更改内容。

以前,我使用的是

on: 
  push
Run Code Online (Sandbox Code Playgroud)

我对操作上下文中可用的文件内容没有任何问题。

但是,我的命令现在失败了,我认为这是因为上下文仅包含触发操作的提交(没有文件更改)。以前我运行此操作push并且总是成功,文件更改可用在上下文中。

我在用着:

    steps:
      - uses: actions/checkout@v2
Run Code Online (Sandbox Code Playgroud)

https://github.com/actions/checkout

是否可以使用它来在操作上下文中对拉取请求进行所有文件更改?

任何对此的帮助将不胜感激!

Grz*_*ski 8

您可以通过使用市场上提供的开源 Action 来做到这一点:

jobs:
  build:
    runs-on: ubuntu-latest  # windows-latest | macos-latest
    name: Test changed-files
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0  # OR "2" -> To retrieve the preceding commit.

      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v14.6

      - name: List all changed files
        run: |
          for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
            echo "$file was changed"
          done
Run Code Online (Sandbox Code Playgroud)

上面的解决方案使用 git checkout 和 git diff 来获取 PR 更改的文件。或者,如果您确实只需要有关已更改路径的信息,并且实际上并不需要文件本身(无需签出) - 您可以使用ghCLI 无需签出即可完成此操作:

gh pr view XXX --json files -q '.files[].path'
Run Code Online (Sandbox Code Playgroud)

你可以像这样运行它:

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
      - run: gh pr view XXX --json files -q '.files[].path'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Run Code Online (Sandbox Code Playgroud)