[英]Get commit SHA in Github actions
在 Github 操作中,您可以使用${GITHUB_SHA}
獲取提交 SHA,這是默認的環境變量。 . 但是,這個提交 SHA 似乎是一個合並提交?。 這不等於 PR 的 Github UI 上顯示的提交 SHA? 關於如何獲取 PR 中顯示的 SHA(在 Github UI 上)有什么想法嗎?
參考: Github 社區帖子與weide-zhou(Github 合作伙伴)的回答。
當您可以創建拉取請求時,github 將執行基於假合並分支的工作流:
refs/pull/:prNumber/merge
,merge_commit_sha
在 base 或 head 分支上不存在,但指向該代理合並提交,並且有是一個可合並的鍵,用於顯示測試提交的狀態。因此,這里的
github.sha
代表實際的合並提交。
提示:您可以使用以下步驟打印GitHub variables
:
- name: Show GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
看起來你在這里想要的是${{ github.event.pull_request.head.sha }}
值。
在pull_request
的情況下,最新提交的哈希值可以在${{ github.event.pull_request.head.sha }}
變量中找到,而${{ github.sha }}
指的是 PR 合並提交。
請注意,如果已為 fork 存儲庫打開github.event.pull_request
,則github.event.pull_request
變量將為空(不知道這是錯誤還是他們正在處理的問題)。
這不是問題的直接答案,但是當我尋找獲取 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}
所以現在我們可以使用 ENV 中的LAST_COMMIT_SHA
來獲取最后一次提交的 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}
並將其稱為每個工作流程中的第一步
# .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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.