Wie bekomme ich die Abkürzung sha für den Github-Workflow?

Lesezeit: 3 Minuten

Benutzer-Avatar
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:

name: continuous integration
on:
  push:
    branches:
      - '**'

env:
  IMAGE: docker.pkg.github.com/${{ github.repository }}/jactor-persistence:${{ github.sha }}

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?

Benutzer-Avatar
Peterewan

Wie von VonC erwähnt, können Sie die Zeichenfolge in einem vorherigen Schritt einfach selbst berechnen.

      - name: Set outputs
        id: vars
        run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
      - name: Check outputs
        run: echo ${{ steps.vars.outputs.sha_short }}

  • 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.

    – Tschad

    13. Juni um 18:48 Uhr

Habe eine mögliche Lösung gefunden hiermit bashs Parametersubstitution

- name: Step
  run: echo ${GITHUB_SHA::7}

  • 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

Benutzer-Avatar
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

Sehen actions/starter-workflows Ausgabe 68 und Beispiele.

Aber seit Okt. 2019du hast jetzt “Env auf Workflow- und Auftragsebene

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.

Sehen:

1283190cookie-checkWie bekomme ich die Abkürzung sha für den Github-Workflow?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy