Wie bekomme ich die Abkürzung sha für den Github-Workflow?
Lesezeit: 3 Minuten
jactor-erhebt sich
Ich erstelle einen Workflow in GitHub, der ein Docker-Image erstellt und verwendet. Daher habe ich meine Workflow-Datei mit einer globalen Umgebungsvariablen für dieses Docker-Image gestartet, die für alle Jobs in meinem Workflow sichtbar ist:
Ich möchte ersetzen ${{ github.sha }} mit dem kurzen sha des Kopfcommits, das gleiche wie das Ergebnis des folgenden Befehls git rev-parse --short HEAD
Ist das möglich?
Peterewan
Wie von VonC erwähnt, können Sie die Zeichenfolge in einem vorherigen Schritt einfach selbst berechnen.
Gute Ergänzung zu meiner Antwort. Das Problem ist zu wissen, dass 7 kurz genug und nicht zu kurz ist: stackoverflow.com/a/21015031/6309
– VonC
20. Januar 2020 um 8:50 Uhr
Aber es tut es: das ist, was stackoverflow.com/a/21015031/6309 dokumentiert/darstellt.
– VonC
20. Januar 2020 um 9:42 Uhr
Tolle Antwort, aber dies funktioniert nicht richtig, wenn es unter Windows ausgeführt wird. Der Echo-String muss in Anführungszeichen gesetzt werden. echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
– MaxGhost
21. März 2020 um 23:41 Uhr
Danke @MaxGhost. Antwort aktualisiert.
– Peterewan
22. März 2020 um 0:52 Uhr
Zusätzlich zum Kommentar von @ MaxGhost, wenn Sie den Hash des letzten Commits des Zweigs anstelle des Merge-Commits möchten: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.event.pull_request.head.sha }})"
– Yoon-Jae Jeong
10. August 2021 um 3:48 Uhr
Sie können auch eine Umgebungsvariable mit dem Kürzel sha setzen:
- name: Add SHORT_SHA env property with commit short sha
run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
SHORT_SHA kann dann wie jede andere Umgebungsvariable verwendet werden, z. B. so:
- name: My step
run: myscript ${SHORT_SHA}
Ich mochte diesen Ansatz, habe aber stattdessen rev-parse verwendet run: echo "SHORT_SHA=`git rev-parse --short HEAD`" >> $GITHUB_ENV
– Gilberto Treviño
23. September 2021 um 13:18 Uhr
Am Ende habe ich diesen Ansatz verwendet, weil git rev-parse --short HEAD hat aufgehört für mich zu arbeiten und war leer. ich benutzte ${{ github.sha }} stattdessen auch.
Dies ist immer noch etwas (es scheint), das Sie irgendwie in einem Schritt ausführen müssen … obwohl es ziemlich einfach erscheint, scheint es, als wäre es nicht möglich, dies als globale Variable zu tun …
– jactor-steigt
8. September 2021 um 9:08 Uhr
@jactor-rises, wonach Sie suchen, ist im Moment nicht möglich, es sei denn, github fügt der Variablen/dem Kontext ein kurzes sha hinzu, also ist das Kürzeste derzeit das Beste, meiner Meinung nach
– uschuz
18. September 2021 um 2:08 Uhr
VonC
Es scheint nicht verfügbar zu sein: die github Kontext beinhaltet nur github.sha als die voll commit sha (das die Workflow-Ausführung ausgelöst hat)
Sie müssten die gewünschte Zeichenfolge irgendwie berechnen (indem Sie nur die ersten n Zeichen von auswählen ${{ github.sha }}.
Das heißt, Sie können:
Definieren Sie eine Variable wie in gezeigt peterevans‘s Antwort
auf die Festplatte schreiben
cat $my_var Ihre zu verwenden VAR bei jedem Schritt
Es ist üblich, eine Reihe von Umgebungsvariablen zu definieren, die in mehreren Schritten in einem Job und sogar in mehreren Jobs in einem Workflow verwendet werden.
Jetzt kannst du füge ein hinzu env sowohl auf Workflow- als auch auf Jobebene abbilden.
Diese Umgebungsvariablen werden mit der zusammengeführt env auf jeder Stufe niedriger in der Hierarchie definiert.