You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions的run-name中获取指定分支的最新Commit SHA

解决GitHub Actions手动触发时获取指定分支最新Commit SHA并显示在run-name中

问题根源:github.sha变量在手动触发工作流时,指向的是触发工作流的分支的最新提交,而非你输入的目标分支的提交,所以会出现指定其他分支仍显示master SHA的情况。

解决方案:通过前置Job获取目标分支SHA

我们可以先创建一个前置Job,专门拉取所有分支并获取目标分支的最新SHA,再将该SHA传递给主Job,最终在run-name中引用这个值。

完整工作流示例:

name: Build Specific Branch
on:
  workflow_dispatch:
    inputs:
      branch:
        description: '分支名称'
        required: true
        default: 'master'

jobs:
  # 前置Job:获取目标分支的最新SHA
  get-target-sha:
    runs-on: ubuntu-latest
    outputs:
      branch-sha: ${{ steps.extract-sha.outputs.sha }}
    steps:
      - name: 拉取完整代码仓库
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # 必须设置为0,才能拉取所有分支的历史

      - name: 获取目标分支最新SHA
        id: extract-sha
        run: |
          # 拉取目标分支的最新远程提交
          git fetch origin ${{ github.event.inputs.branch }}
          # 输出SHA到GitHub变量
          echo "sha=$(git rev-parse origin/${{ github.event.inputs.branch }})" >> $GITHUB_OUTPUT

  # 主构建Job
  build:
    needs: get-target-sha
    runs-on: ubuntu-latest
    # 引用前置Job输出的SHA作为run-name的一部分
    run-name: Build from [Branch = ${{ github.event.inputs.branch }}] && [COMMIT SHA = ${{ needs.get-target-sha.outputs.branch-sha }}]
    steps:
      - name: 切换到目标分支
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.inputs.branch }}
      
      # 这里添加你的构建步骤,比如编译、打包等
      - name: 执行构建
        run: |
          echo "开始构建分支 ${{ github.event.inputs.branch }},提交SHA:${{ needs.get-target-sha.outputs.branch-sha }}"

关键说明

  1. fetch-depth: 0:必须设置这个参数才能拉取仓库所有分支的完整历史,否则无法获取目标分支的SHA。
  2. git rev-parse origin/${分支名}:直接从远程仓库获取目标分支的最新提交SHA,避免本地分支未同步的问题。
  3. Job依赖:主Job通过needs: get-target-sha确保前置Job先执行,这样才能在run-name中引用其输出的SHA值。

内容的提问来源于stack exchange,提问作者Subzero123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:05:23