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.
Warning
Bei der Erstellung von Workflows und Aktionen sollten Sie immer bedenken, ob Ihr Code nicht vertrauenswürdige Eingaben von möglichen Eindringlingen ausführen könnte. 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.
-
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 Cloud übergeben wurde. Weitere Informationen findest du unter Ein neues Repository erstellen. -
Klone dein Repository auf deinen Computer. Weitere Informationen findest du unter Ein Repository klonen.
-
Gehe in deinem Terminal zum Verzeichnisse deines neuen Repositorys.
Shell cd hello-world-composite-action
cd hello-world-composite-action
-
Erstellen Sie im Repository
hello-world-composite-action
eine neue Datei namensgoodbye.sh
mit dem folgenden Beispielcode hinzu:Shell echo "echo Goodbye" > goodbye.sh
echo "echo Goodbye" > goodbye.sh
-
Lege
goodbye.sh
über das Terminal als ausführbare Datei fest.Shell chmod +x goodbye.sh
chmod +x goodbye.sh
chmod +x goodbye.sh
chmod +x goodbye.sh
git add --chmod=+x -- goodbye.sh
git add --chmod=+x -- goodbye.sh
-
Checke die Datei
goodbye.sh
über das Terminal ein.Shell git add goodbye.sh git commit -m "Add goodbye script" git push
git add goodbye.sh git commit -m "Add goodbye script" git push
git add goodbye.sh git commit -m "Add goodbye script" git push
git add goodbye.sh
git commit -m "Add goodbye script"
git push
git commit -m "Add goodbye script" git push
git commit -m "Add goodbye script"
git push
Eine Datei für die Metadaten der Aktion erstellen
-
Erstelle im Repository
hello-world-composite-action
eine neue Datei namensaction.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
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 Ausgabevariablenrandom-number
zu, fügt den Pfad der Aktion zum Systempfad des Runners hinzu (um das Skriptgoodbye.sh
während der Ausführung ausfindig zu machen) und führt das Skriptgoodbye.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. -
Checke die Datei
action.yml
über das Terminal ein.Shell git add action.yml git commit -m "Add action" git push
git add action.yml git commit -m "Add action" git push
-
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
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.
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 }}
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.