gpt4 book ai didi

git - 在GitHub Action工作流中进行推送或 merge 之前,如何获取上一次提交?

转载 作者:行者123 更新时间:2023-12-03 14:00:09 25 4
gpt4 key购买 nike

我正在使用Nx在新项目上提供monorepo支持。 Nx的好处之一是,它可以确定monorepo中的哪些应用受到一系列更改(开始提交,结束提交)的影响。因此,如果您有一堆应用程序,则只需要构建,测试和部署受更改实际影响的应用程序,而不是整个monorepo。

我想设置一个GitHub Action工作流,以便仅在推送或 merge 到master时部署受影响的应用程序。但是,我在弄清楚如何获取更改范围的“开始提交”时遇到了麻烦。换句话说,如何获取上次部署的提交哈希?

GitHub提供了一个env变量 GITHUB_SHA ,但这是触发工作流的提交(即“结束提交”)。它还提供了GITHUB_BASE_REF,但仅适用于从 fork 存储库运行到头部存储库的工作流。

为此,CircleCI具有 pipeline.git.base_revision 。 GitHub Action 是否有相似之处?

最佳答案

对于请求请求事件,可以在github上下文中找到基础的ref和sha,如下所示。

${{ github.event.pull_request.base.ref }}
${{ github.event.pull_request.base.sha }}

对于推送事件,有 base_refbefore参数。
${{ github.event.base_ref }}
${{ github.event.before }}
before是推送到分支 base_ref上的原点的最后一个git sha。请注意,如果这是在新分支上的第一次提交,则 base_refbefore将具有null/默认值,如下所示。
##[debug]  "event": {
##[debug] "after": "727f7aec97c394083d769029e5f619e9b094a235",
##[debug] "base_ref": null,
##[debug] "before": "0000000000000000000000000000000000000000",
...

顺便说一句,您可以转储github上下文并通过将以下步骤添加到工作流中来检查可用参数:
      - name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"

关于git - 在GitHub Action工作流中进行推送或 merge 之前,如何获取上一次提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61860732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com