Ham*_*med 20 git github github-actions
在 Github 操作中,您可以使用 获取提交 SHA ${GITHUB_SHA},这是默认的环境变量。。然而,这个提交SHA似乎是一个合并提交!?它不等于 PR 的 Github UI 上显示的提交 SHA。关于如何获取 PR 中显示的 SHA(在 Github UI 上)有什么想法吗?
Gui*_*urd 30
参考:Github 社区帖子以及weide- Zhou(Github 合作伙伴)的回答。
\n\n\n当您可以创建拉取请求时,github 将执行基于工作流的\n非假合并分支:\
\nrefs/pull/:prNumber/mergen ,\nmerge_commit_sha不存在\xe2\x80\x99t 存在于基本或头分支上,但指向\n该代理合并提交,并且存在显示测试提交状态的可合并键。\n因此,这里的
\ngithub.sha代表实际的合并提交。
GitHub variables提示:您可以使用以下步骤打印:
- name: Show GitHub context\n env:\n GITHUB_CONTEXT: ${{ toJson(github) }}\n run: echo "$GITHUB_CONTEXT"\nRun Code Online (Sandbox Code Playgroud)\n看来你在这里想要的是${{ github.event.pull_request.head.sha }}价值。
在 的情况下pull_request,可以在变量中找到最新提交的哈希值${{ github.event.pull_request.head.sha }},而${{ github.sha }}指的是 PR 合并提交。
请注意,如果已为 fork 存储库打开 pull_request,则该github.event.pull_request变量将为空(不知道这是否是错误或他们正在处理的内容)。
MrM*_*est 10
这不是问题的直接答案,但当我正在寻找获取 SHA 的通用解决方案时,谷歌向我建议了这个问题,无论是push还是pull_request,所以我的答案可能对某人有帮助。
- name: Setup Environment (PR)
if: ${{ github.event_name == 'pull_request' }}
shell: bash
run: |
echo "LAST_COMMIT_SHA=${{ github.event.pull_request.head.sha }}" >> ${GITHUB_ENV}
- name: Setup Environment (Push)
if: ${{ github.event_name == 'push' }}
shell: bash
run: |
echo "LAST_COMMIT_SHA=${GITHUB_SHA}" >> ${GITHUB_ENV}
Run Code Online (Sandbox Code Playgroud)
所以现在我们可以使用LAST_COMMIT_SHAENV 来获取最后一次提交的 SHA。如果我们在多个工作流程中需要它,我们可以将这些步骤放入自定义操作中
# .github/actions/prepare/action.yml
name: 'Preparation'
description: ''
runs:
using: "composite"
steps:
- name: Setup Environment (PR)
if: ${{ github.event_name == 'pull_request' }}
shell: bash
run: |
echo "LAST_COMMIT_SHA=${{ github.event.pull_request.head.sha }}" >> ${GITHUB_ENV}
- name: Setup Environment (Push)
if: ${{ github.event_name == 'push' }}
shell: bash
run: |
echo "LAST_COMMIT_SHA=${GITHUB_SHA}" >> ${GITHUB_ENV}
Run Code Online (Sandbox Code Playgroud)
并将其称为每个工作流程的第一步
# .github/workflows/ci.yml
# ...
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Prepare
uses: ./.github/actions/prepare
# ...
- name: Set build tag
shell: bash
run: |
echo "BUILD_TAG=${LAST_COMMIT_SHA:0:7}" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25858 次 |
| 最近记录: |