首页 > 解决方案 > 在 GitHub 操作中获取当前分支和提交哈希

问题描述

我想使用 GitHub 操作构建一个 docker 映像,从 TeamCity 迁移。

在构建脚本中,我想用分支和提交的组合来标记图像,例如master.ad959de. 在本地测试,我得到这样的信息:

git_branch=`git symbolic-ref --short HEAD`
git_hash=`git rev-parse --short HEAD`
docker_version=${git_branch}.${git_hash}

这是 GitHub 操作的相关部分:

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1

    - name: Create docker image
      run: ./docker-build.sh  

在该 GitHub 操作中运行该脚本会导致此错误:

fatal: ref HEAD is not a symbolic ref

如何在 GitHub 操作中生成这样的标签?

标签: gitgithubgithub-actions

解决方案


使用环境变量

github 提供了两个在这里有用的变量,您需要对它们进行一些处理以获得您想要的值:

GITHUB_SHA:触发​​工作流的提交 SHA。例如,ffac537e6cbbf934b08745a378932722df287a53

GITHUB_REF: 触发工作流的分支或标签引用。例如,refs/heads/feature-branch-1。如果事件类型没有可用的分支或标签,则该变量将不存在。

可以像这样提取短值:

git_hash=$(git rev-parse --short "$GITHUB_SHA")
git_branch=${GITHUB_REF#refs/heads/}

推荐阅读