Je veux construire une image Docker à l'aide d'une action GitHub, migration de TeamCity.
Dans le script de construction, je souhaite marquer l'image avec une combinaison de branche et de validation, par exemple. master.ad959de
. Tests que localement, je reçois cette information comme celle-ci:
git_branch=`git symbolic-ref --short HEAD`
git_hash=`git rev-parse --short HEAD`
docker_version=${git_branch}.${git_hash}
C'est la partie pertinente de l'action GITUB:
name: CI
on: [Push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Create docker image
run: ./docker-build.sh
Exécution de ce script dans cette action GitHub entraîne cette erreur:
fatal: ref HEAD is not a symbolic ref
Comment puis-je générer une étiquette comme celle de l'action GitHithub?
de tilisation de variables d'environnement
gitHub fournit deux variables utiles ici, vous devrez les traiter un peu pour obtenir les valeurs que vous désirez:
GITHUB_SHA
: Le commit SHA qui a déclenché le flux de travail. Par exemple,ffac537e6cbbf934b08745a378932722df287a53
.
GITHUB_REF
: La branche ou la balise refait ce qui a déclenché le flux de travail. Par exemple,refs/heads/feature-branch-1
. Si ni une branche ou une étiquette n'est disponible pour le type d'événement, la variable n'existera pas.
Les courtes valeurs peuvent être extraites comme ceci:
git_hash=$(git rev-parse --short "$GITHUB_SHA")
git_branch=${GITHUB_REF##*/}
Vous pouvez l'obtenir de cette façon dans votre fichier sh -
BRANCH_NAME=$(echo $GITHUB_REF | cut -d'/' -f 3)
GITHUB_SHA_SHORT=$(echo $GITHUB_SHA | cut -c1-8)