Github-gehostete Runner für Unternehmen
Informationen zu vor- und nachgelagerten Job-Skripten
Du kannst Skripts automatisch auf einem selbstgehosteten Runner ausführen, entweder vor einer Auftragsausführung oder nach Abschluss der Ausführung eines Auftrags. Diese Skripts können verwendet werden, um die Anforderungen des Auftrags zu unterstützen, wie das Erstellen oder Entfernen einer Runner-Umgebung oder das Bereinigen von Verzeichnissen. Du kannst diese Skripts auch verwenden, um Telemetriedaten dazu nachzuverfolgen, wie deine Runner verwendet werden.
Die benutzerdefinierten Skripts werden automatisch ausgelöst, wenn eine bestimmte Umgebungsvariable für den Runner festgelegt wird. Die Umgebungsvariable muss den absoluten Pfad zum Skript enthalten. Weitere Informationen findest du unter Auslösen der Skripts weiter unten.
Die folgenden Skriptsprachen werden unterstützt:
-
**Bash**: Verwendet `bash` und kann auf `sh` zurückgreifen. Wird ausgeführt, indem `-e {pathtofile}` ausgeführt wird. -
**PowerShell**: Verwendet `pwsh` und kann auf `powershell` zurückgreifen. Wird ausgeführt, indem `-command \". '{pathtofile}'\"` ausgeführt wird.
Schreiben der Skripts
Deine benutzerdefinierten Skripts können die folgenden Features verwenden:
-
**Variablen**: Über Skripts kann auf die Standardvariablen zugegriffen werden. Die vollständige Webhook-Ereignisnutzlast findest du in `GITHUB_EVENT_PATH`. Weitere Informationen finden Sie unter [AUTOTITLE](/actions/reference/variables-reference#default-environment-variables). -
**Workflow-Befehle:** Skripte können Workflow-Befehle verwenden. Weitere Informationen finden Sie unter [AUTOTITLE](/actions/using-workflows/workflow-commands-for-github-actions). Skripts können auch Umgebungsdateien verwenden. Weitere Informationen findest du unter [Umgebungsdateien](/actions/using-workflows/workflow-commands-for-github-actions#environment-files).
Deine Skriptdateien müssen eine Dateierweiterung für die entsprechende Sprache verwenden, z. B. .sh oder .ps1, um erfolgreich ausgeführt zu werden.
Hinweis
Vermeide das Verwenden deiner Skripts zum Ausgeben vertraulicher Informationen in die Konsole, da jede Person mit Lesezugriff auf das Repository möglicherweise die Ausgabe in den Benutzeroberflächenprotokollen anzeigen kann.
Umgang mit Exit-Codes
Bei Vorskriptaufgaben gibt der Exitcode 0 an, dass das Skript erfolgreich abgeschlossen wurde, und die Aufgabe wird anschließend ausgeführt. Wenn ein anderer Exitcode vorhanden ist, wird der Auftrag nicht ausgeführt und als fehlerhaft markiert. Um die Ergebnisse Ihrer Vorab-Skripte anzuzeigen, überprüfen Sie die Protokolle auf Set up runner-Einträge. Weitere Informationen zum Überprüfen der Protokolle findest du unter Verwenden von Workflowausführungsprotokollen.
Die continue-on-error-Einstellung wird für die Verwendung durch diese Skripts nicht unterstützt.
Das Triggern der Skripte
Die benutzerdefinierten Skripts müssen sich auf dem Runner befinden, sollten aber nicht im Anwendungsverzeichnis actions-runner gespeichert werden. Die Skripts werden im Sicherheitskontext des Dienstkontos ausgeführt, das den Runnerdienst ausführt.
Hinweis
Die ausgelösten Skripts werden synchron verarbeitet, was die Ausführung des Auftrags verhindert, während sie laufen.
Die Skripts werden automatisch ausgeführt, wenn der Runner über die folgenden Umgebungsvariablen verfügt, die einen absoluten Pfad zum Skript enthalten:
*
ACTIONS_RUNNER_HOOK_JOB_STARTED: Das in dieser Umgebungsvariablen definierte Skript wird ausgelöst, wenn einem Runner ein Auftrag zugewiesen wurde, aber bevor die Ausführung des Auftrags gestartet wird.
*
ACTIONS_RUNNER_HOOK_JOB_COMPLETED: Das in dieser Umgebungsvariable definierte Skript wird am Ende des Auftrags ausgelöst, nachdem alle im Workflow definierten Schritte ausgeführt wurden.
Um diese Umgebungsvariablen festzulegen, können Sie sie entweder dem Betriebssystem oder einer Datei mit dem Namen .env im selbstgehosteten Runner-Anwendungsverzeichnis hinzufügen (d. h. dem Verzeichnis, in das Sie die Runner-Software heruntergeladen und entpackt haben). Beachte, dass nach jeder Änderung an der .env-Datei ein Neustart des Runners erforderlich ist.
Beispielsweise führt der folgende .env-Eintrag dazu, dass der Runner automatisch ein Skript ausführt, das als /opt/runner/cleanup_script.sh auf dem Runner-Computer gespeichert wird, bevor jeder Job ausgeführt wird:
ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh
Hinweis
Das in ACTIONS_RUNNER_HOOK_JOB_COMPLETED definierte Skript wird am Ende des Auftrags ausgeführt, bevor er abgeschlossen wird. Dadurch wird es ungeeignet für Anwendungsfälle, die einen Runner unterbrechen können, z. B. durch Löschen des Runner-Computers im Rahmen einer Implementierung zur automatischen Skalierung.
Problembehandlung
Berechtigung verweigert
Wenn Sie beim Versuch, ein Skript auszuführen, die Fehlermeldung „Berechtigung verweigert“ erhalten, stellen Sie sicher, dass das Skript ausführbar ist. Beispielsweise können Sie in einem Terminal unter Linux oder MacOS den folgenden Befehl verwenden, um eine Datei ausführbar zu machen.
chmod +x PATH/TO/FILE
Weitere Informationen zum Verwenden von Workflows zum Ausführen von Skripts findest du unter Hinzufügen von Skripts zu deinem Workflow.
Keine Timeouteinstellung
Es ist derzeit keine Timeouteinstellung für Skripts verfügbar, die von ACTIONS_RUNNER_HOOK_JOB_STARTED oder ACTIONS_RUNNER_HOOK_JOB_COMPLETED ausgeführt werden. Sie könnten daher in Erwägung ziehen, Ihrem Skript eine Timeout-Verarbeitung hinzuzufügen.
Überprüfen des Workflow-Ausführungsprotokolls
Um zu bestätigen, dass deine Skripts ausgeführt werden, kannst du die Protokolle für diesen Auftrag überprüfen. Die Skripts werden in separaten Schritten für Set up runner oder Complete runner aufgeführt, je nachdem, welche Umgebungsvariable das Skript auslöst. Weitere Informationen zum Überprüfen der Protokolle findest du unter Verwenden von Workflowausführungsprotokollen.