Skip to main content

Erstellen einer zusammengesetzten Aktion

In diesem Leitfaden wird erläutert, wie du eine zusammengesetzte Aktion erstellst.

Platform navigation

Hinweis: GitHub-gehostete Runner werden auf GitHub Enterprise Server derzeit nicht unterstützt. Weitere Informationen zur geplanten zukünftigen Unterstützung findest Du in der GitHub public roadmap.

Einführung

In dieser Anleitung erfährst du mehr über die grundlegenden Komponenten, die benötigt werden, um eine paketierte zusammengesetzte Aktion zu erstellen und zu verwenden. Diese Anleitung fokussiert jene Komponenten, welche zum Paketieren der Aktion benötigt werden. Daher hat der Aktions-Code nur minimale Funktionalität. Die Aktion gibt „Hello World“ und dann „Goodbye“ bzw. nach Angabe eines benutzerdefinierten Namens „Hello [who-to-greet]“ und dann „Goodbye“ aus. Zudem ordnet die Aktion der Ausgabevariablen random-number eine Zufallszahl zu und führt ein Skript namens goodbye.sh aus.

Nach dem Abschluss dieses Projekts weißt du, wie du eine eigene zusammengesetzte Aktion erstellen und in einem Workflow testen kannst.

Warnung: Beim Erstellen von Workflows und Aktionen solltest du immer überprüfen, ob dein Code gegebenenfalls nicht vertrauenswürdige Eingaben von Angreifern ausführen kann. Bestimmte Kontexte sollten als nicht vertrauenswürdige Eingaben behandelt werden, da ein Angreifer seine eigenen schädlichen Inhalte einfügen könnte. Weitere Informationen findest du unter Sicherheitshärtung für GitHub Actions.

Zusammengesetzte Aktionen und wiederverwendbare Workflows

Zusammengesetzte Aktionen ermöglichen Ihnen das Erfassen einer Reihe von Workflowauftragsschritten in einer einzigen Aktion, die Sie dann als einzelnen Auftragsschritt in mehreren Workflows ausführen können. Wiederverwendbare Workflows stellen eine weitere Möglichkeit zum Vermeiden von Duplizierungen dar. Sie ermöglichen Ihnen das Ausführen eines vollständigen Workflow aus anderen Workflows. Weitere Informationen findest du unter Vermeiden von Duplikaten.

Voraussetzungen

Bevor Sie, müssen Sie ein GitHub-Repository erstellen.

  1. Erstellen Sie ein neues öffentliches Repository auf GitHub. Du kannst einen beliebigen Repositorynamen auswählen oder das folgende hello-world-composite-action-Beispiel verwenden. Du kannst diese Dateien hinzufügen, nachdem dein Projekt per Push an GitHub Enterprise Server übergeben wurde. Weitere Informationen findest du unter Ein neues Repository erstellen.

  2. Klone dein Repository auf deinen Computer. Weitere Informationen findest du unter Ein Repository klonen.

  3. Gehe in deinem Terminal zum Verzeichnisse deines neuen Repositorys.

    Shell
    cd hello-world-composite-action
    
  4. Erstellen Sie im Repository hello-world-composite-action eine neue Datei namens goodbye.sh mit dem folgenden Beispielcode hinzu:

    Shell
    echo "echo Goodbye" > goodbye.sh
    
  5. Lege goodbye.sh über das Terminal als ausführbare Datei fest.

    Shell
    chmod +x goodbye.sh
    
Shell
chmod +x goodbye.sh
Shell
git add --chmod=+x -- goodbye.sh
  1. Checke die Datei goodbye.sh über das Terminal ein.

    Shell
    git add goodbye.sh
    git commit -m "Add goodbye script"
    git push
    
Shell
git add goodbye.sh
git commit -m "Add goodbye script"
git push
Shell
git commit -m "Add goodbye script"
git push

Eine Datei für die Metadaten der Aktion erstellen

  1. Erstelle im Repository hello-world-composite-action eine neue Datei namens action.yml, und füge den folgenden Beispielcode hinzu. Weitere Informationen zu dieser Syntax findest du unter Metadatensyntax für GitHub Actions.

    YAML
    name: 'Hello World'
    description: 'Greet someone'
    inputs:
      who-to-greet:  # id of input
        description: 'Who to greet'
        required: true
        default: 'World'
    outputs:
      random-number:
        description: "Random number"
        value: ${{ steps.random-number-generator.outputs.random-number }}
    runs:
      using: "composite"
      steps:
        - name: Set Greeting
          run: echo "Hello $INPUT_WHO_TO_GREET."
          shell: bash
          env:
            INPUT_WHO_TO_GREET: ${{ inputs.who-to-greet }}
    
        - name: Random Number Generator
          id: random-number-generator
          run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT
          shell: bash
    
        - name: Set GitHub Path
          run: echo "$GITHUB_ACTION_PATH" >> $GITHUB_PATH
          shell: bash
          env:
            GITHUB_ACTION_PATH: ${{ github.action_path }}
    
        - name: Run goodbye.sh
          run: goodbye.sh
          shell: bash
    
    

    Diese Datei definiert die who-to-greet-Eingabe, ordnet die zufällig generierte Zahl der Ausgabevariablen random-number zu, fügt den Pfad der Aktion zum Systempfad des Runners hinzu (um das Skript goodbye.sh während der Ausführung ausfindig zu machen) und führt das Skript goodbye.sh aus.

    Weitere Informationen zur Verwaltung von Ausgaben findest du unter Metadatensyntax für GitHub Actions.

    Weitere Informationen zur Verwendung von github.action_path findest du unter Zugreifen auf kontextbezogene Informationen zu Workflowausführungen.

  2. Checke die Datei action.yml über das Terminal ein.

    Shell
    git add action.yml
    git commit -m "Add action"
    git push
    
  3. Füge über das Terminal ein Tag hinzu. In diesem Beispiel wird ein Tag namens v1 verwendet. Weitere Informationen findest du unter Informationen zu benutzerdefinierten Aktionen.

    Shell
    git tag -a -m "Description of this release" v1
    git push --follow-tags
    

Deine Aktion in einem Workflow testen

Der folgende Workflowcode verwendet die abgeschlossene „Hello World“-Aktion, die du unter Erstellen einer zusammengesetzten Aktion erstellt hast.

Kopiere den Workflowcode in eine .github/workflows/main.yml-Datei in einem anderen Repository, ersetzen Sie actions und SHA durch den Besitzer des Repositorys und das SHA des Commit, die Sie nutzen wollen. Du kannst auch die Eingabe für who-to-greet durch deinen Namen ersetzen.

YAML
on: [push]

jobs:
  hello_world_job:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - uses: actions/checkout@v4
      - id: foo
        uses: OWNER/hello-world-composite-action@SHA
        with:
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number "$RANDOM_NUMBER"
        shell: bash
        env:
          RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }}

Klicke in deinem Repository auf die Registerkarte Aktionen, und wähle die neueste Workflowausführung aus. Die Ausgabe sollte Folgendes enthalten: „Hello Mona the Octocat“, das Ergebnis des Skripts „Goodbye“ und eine zufällige Zahl.

Beispiel für zusammengesetzte Aktionen für GitHub

Viele Beispiele für zusammengesetzte Aktionen finden Sie unter GitHub.