git - 在 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 操作中生成这样的标签?
解决方案
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/}
推荐阅读
- intellij-idea - 在路径中替换:替换中的文件名
- sql - 在 SQL 作业上执行 cmdexec 以导出到 CSV 的意外参数
- javascript - 在angularjs应用程序中更改粗体文本
- python - python regex re.sub 删除逗号前的空格
- postgresql - 具有负值的 SPLIT_PART [Postgres 9.5]
- xml - 如何在不删除同级的情况下匹配子级元素进行分组?
- amazon-s3 - 红移卸载问题
- java - java - 如何在SpringBoot的java中为@RequestBody中的每个字段只取一个值
- javascript - 在本地浏览器中按 F5 时,Weinre 如何以及为何刷新客户端浏览器?
- postman - 如何获得特定(高速公路)道路的车道数?