Implementieren von Variablen und Skripts in einem Workflow

Abgeschlossen

Nachdem Sie nun die Komponenten einer Workflowdatei kennen, erfahren Sie, wie Sie diese Workflows für verschiedene Szenarien anpassen können. In dieser Lektion konzentrieren wir uns auf die Verwendung von Variablen und Skripts zur Optimierung des Workflows. Variablen bieten eine Möglichkeit, nicht sensible Konfigurationsinformationen zu speichern und wiederzuverwenden. Sie können alle Konfigurationsdaten wie Compilerkennzeichnungen, Benutzernamen oder Servernamen als Variablen speichern. Variablen werden auf der Runner-Maschine interpoliert, auf der Ihr Workflow ausgeführt wird. Befehle, die in Aktionen oder Workflowschritten ausgeführt werden, können Variablen erstellen, lesen und ändern.

Sie können eigene benutzerdefinierte Variablen festlegen oder die Standardumgebungsvariablen verwenden, die GitHub automatisch festlegt. Sie können eine benutzerdefinierte Variable auf zwei Arten erstellen.

  • Um eine Umgebungsvariable für die Verwendung in einem einzelnen Workflow zu definieren, können Sie den env Schlüssel in der Workflowdatei verwenden.
  • Um eine Konfigurationsvariable über mehrere Workflows hinweg zu definieren, können Sie sie auf Organisation-, Repository- oder Umgebungsebene definieren.

Definieren von Umgebungsvariablen für einen einzelnen Workflow

Um eine benutzerdefinierte Umgebungsvariable für einen einzelnen Workflow festzulegen, können Sie sie mithilfe des env Schlüssels in der Workflowdatei definieren. Der Bereich einer benutzerdefinierten Variablen, die von dieser Methode festgelegt wird, ist auf das Element beschränkt, in dem sie definiert ist. Sie können Variablen definieren, die einen bestimmten Geltungsbereich haben:

  • Der gesamte Workflow mithilfe von env auf der obersten Ebene der Workflowdatei.
  • Der Inhalt eines Auftrags innerhalb eines Workflows unter Verwendung von jobs.<job_id>.env.
  • Ein bestimmter Schritt innerhalb einer Aufgabe mithilfe von jobs.<job_id>.steps[*].env.

Anmerkung

Sowohl jobs.<job_id>.env als auch jobs.<job_id>.steps[*].env implementieren Kontexte, die weiter unten in diesem Modul behandelt werden.

Im folgenden Workflowbeispiel werden zwei Variablen implementiert, DAY_OF_WEEK und Greeting, um beim Ausführen eine Begrüßung zu erzeugen.

name: Greeting on variable day

on:
  workflow_dispatch

env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello"
        run: echo "$Greeting, today is $DAY_OF_WEEK!"

Benennungskonventionen für Umgebungsvariablen

Wenn Sie eine Umgebungsvariable festlegen, können Sie keine der Standardnamen der Umgebungsvariablen verwenden. Wenn Sie versuchen, den Wert einer dieser Standardvariablen außer Kraft zu setzen, wird die Zuordnung ignoriert.

Tipp

Eine vollständige Liste der Standardumgebungsvariablen finden Sie unter "Standardumgebungsvariablen".

Erstellen von Konfigurationsvariablen für ein Repository

Um geheime Schlüssel oder Variablen auf GitHub für ein persönliches Konto-Repository zu erstellen, müssen Sie der Repositorybesitzer sein. Um geheime Schlüssel oder Variablen auf GitHub für ein Organisations-Repository zu erstellen, müssen Sie über admin Zugriff verfügen. Um geheime Schlüssel oder Variablen für ein persönliches Konto-Repository oder ein Organisations-Repository über die REST-API zu erstellen, müssen Sie über den Zugriff auf Mitarbeiter verfügen.

Rangfolge der Konfigurationsvariablen

Wenn eine Variable mit demselben Namen auf mehreren Ebenen vorhanden ist, hat die Variable auf der niedrigsten Ebene Vorrang. Wenn beispielsweise eine Variable auf Organisationsebene denselben Namen wie eine Variable auf Repositoryebene hat, hat die Variable auf Repositoryebene Vorrang. Wenn eine Organisation, ein Repository und eine Umgebung über eine Variable mit demselben Namen verfügen, hat die Variable auf Umgebungsebene Vorrang.

Hinzufügen von Skripts zu Ihrem Workflow

Sie können einen GitHub Actions-Workflow verwenden, um Skripts und Shellbefehle auszuführen, die dann auf dem zugewiesenen Läufer ausgeführt werden. Im folgenden Beispiel wird veranschaulicht, wie Sie das schlüsselwort run verwenden, um den Befehl npm install -g bats auf dem Läufer auszuführen.

jobs:
  example-job:
    runs-on: ubuntu-latest
    steps:
      - run: npm install -g bats

Zum Ausführen eines Skripts, das in Ihrem Repository gespeichert ist, müssen Sie zuerst das Repository für den Runner auschecken. Das folgende Beispiel: checkt das Repository aus; legt das Arbeitsverzeichnis fest – der Speicherort der Skripts im Repository; und führt das skript my-script.sh aus.

jobs:
  example-job:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./scripts
    steps:
      - name: Check out the repository to the runner
        uses: actions/checkout@v4  
      - name: Run a script
        run: ./my-script.sh

Alle Skripts, die ein Workflowauftrag ausführen soll, müssen ausführbar sein. Sie können das Skript als Argument an den Dolmetscher übergeben, der das Skript ausführt ( z. B. run: bash script.sh - oder indem Sie die Datei selbst ausführbar machen.