Vous pouvez utiliser la substitution de commande traditionnelle via les backticks pour obtenir le court hash git (SHA-1), en supposant que le code est en cours de vérification dans $(Build.SourcesDirectory)
:
- bash: |
short_hash=`git rev-parse --short=7 HEAD` ## Au moins 7 chiffres, plus si nécessaire pour l'unicité
echo ""
echo "Full git hash: $(Build.SourceVersion)"
echo "Short git hash: $short_hash"
echo "##vso[task.setvariable variable=short_hash]$short_hash" ## Stocker la variable pour les étapes ultérieures
workingDirectory: $(Build.SourcesDirectory)
displayName: Obtenir le court hash git
Sortie:
Full git hash: f8d63b1aaa20cf348a9b5fc6477ac80ed23d5ca0
Short git hash: f8d63b1
Les étapes suivantes dans le pipeline peuvent ensuite utiliser le court hash via la variable $(short_hash)
.
(Ceci est mieux que de réduire manuellement le full hash git à sept caractères, car cela ajoutera des chiffres supplémentaires si nécessaire pour identifier de manière unique le commit, voir https://stackoverflow.com/a/21015031/1447415.)
Mise à jour: Version améliorée
La version améliorée suivante vérifie que les hashs git correspondent (que le hash complet commence par le hash court) et échoue l'étape sinon:
- bash: |
short_hash=`git rev-parse --short=7 HEAD`
echo ""
echo "Full git hash: $(Build.SourceVersion)"
echo "Short git hash: $short_hash"
echo ""
## Echouer l'étape si le hash complet ne commence pas par le hash court
if [[ $(Build.SourceVersion) != $short_hash* ]]; then
echo "--> Les hashs ne correspondent pas ! Abandon."
exit 1
fi
echo "--> Les hashs correspondent. Stockage du hash court pour les étapes ultérieures."
## Stocker la variable pour les étapes ultérieures
echo "##vso[task.setvariable variable=short_hash]$short_hash"
workingDirectory: $(Build.SourcesDirectory)
displayName: Obtenir le court hash git