Github Action 拉取请求不提供 github_sha 的最后一次提交

Oli*_*bie 5 git github github-actions

我有一个在拉取请求上触发的 github 操作工作流。我想找到在每次提交中已更改的文件,因此我正在尝试运行git diff-tree --no-commit-id --name-only -r ${{ github.sha }}
但是它不会返回该拉取请求中最新提交的哈希提交。我返回了另一个哈希提交(我在我的仓库中的任何地方都找不到它的提交)。
任何人都知道如何解决这个问题或以其他方式我可以在拉取请求中找到在提交中更改的所有文件?

编辑——yml文件

name: test
on: [pull_request]
jobs:
  build: 
    runs-on: ubuntu-latest
    steps:
    - checkout my repo
    - install python
    - run a python script
      run: |
        CHANGED_FILES=$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }})
        python3 .github/scripts/test.py $CHANGED_FILES
Run Code Online (Sandbox Code Playgroud)

我的 github.sha 生成的哈希提交(这里是 ^)似乎与我提交的实际哈希不匹配。

t3r*_*ian 10

我用不同的触发器遇到了类似的问题。事实证明,您可以使用以下步骤打印 GitHub 变量:

- name: Dump GitHub context
  env:
    GITHUB_CONTEXT: ${{ toJson(github) }}
  run: echo "$GITHUB_CONTEXT"
Run Code Online (Sandbox Code Playgroud)

pull_request最新提交的哈希的情况下可以在${{ github.event.pull_request.head.sha }}变量中找到,而${{ github.sha }}指的是 PR 合并提交。

  • 完整的事件有效负载可以在 GitHub 开发人员指南上找到:https://developer.github.com/v3/activity/events/types/#pullrequestevent (2认同)