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"\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}
所以现在我们可以使用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}
并将其称为每个工作流程的第一步
# .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
| 归档时间: | 
 | 
| 查看次数: | 25858 次 | 
| 最近记录: |