使用 GitHub 操作将拉取请求合并到主服务器时,使用什么可预测的提交 sha?

What is a predictable commit sha to use when merging pull request to a master using GitHub actions?

我正在使用 [github-actions]。我有两个工作流程:

on:
  workflow_dispatch:
  pull_request:
    branches:
      - master
on:
  workflow_dispatch:
  push:
    branches:
      - master

pull_request 工作流程生成需要在 push 工作流程中使用的资产。我需要某种允许我连接两个工作流的标识符,最好是 git 合并提交的 SHA。但是,我无法确定可使用的可靠参考。

目前我在 pull_request 工作流程中使用 ${{ github.event.pull_request.head.sha }},在 push 工作流程中我使用:

- name: Setup repository
  uses: actions/checkout@v2
  with:
    fetch-depth: 2
- name: Set CI_COMMIT_SHORT_SHA env property
  shell: bash
  run: echo "CI_COMMIT_SHORT_SHA=$(git rev-parse --short=8 HEAD^2)" >> $GITHUB_ENV

这在大多数情况下都有效,但在合并之前将提交强制推送到 PR 分支时会中断。

pull_requestpush 工作流程相关联的可靠 参考是什么?

如果您希望仅在 PR 合并到 master 时触发第二个工作流程,您可以使用 pull_request.closed 事件。在该工作流程中,$GITHUB_REF 应该为您提供对 PR 合并分支的引用 (refs/pull/:prNumber/merge)。将这两个工作流程结合在一起对您有用吗?

on:
  pull_request:
    branches:
      - master
    types: [closed]

此外,请注意,要忽略未合并的已关闭 PR,您需要在作业中添加条件以在这种情况下跳过它:if: github.event.pull_request.merged == true