Note
Auf GitHub gehostete Runner werden aktuell nicht auf GitHub Enterprise Server unterstützt. Weitere Informationen zur geplanten zukünftigen Unterstützung findest Du in der GitHub public roadmap.
Übersicht
Eine Workflowausführung besteht aus einem oder mehreren jobs
, die standardmäßig parallel ausgeführt werden. Um Aufträge nacheinander auszuführen, kannst du mit dem Schlüsselwort jobs.<job_id>.needs
Abhängigkeiten von anderen Aufträgen definieren.
Jeder Auftrag wird in einer durch runs-on
festgelegten Runnerumgebung ausgeführt.
Innerhalb der Nutzungsbeschränkungen des Workflows kannst Du unbegrenzt viele Jobs ausführen. Weitere Informationen zu auf GitHub gehosteten Runnern finden Sie unter Nutzungseinschränkungen, Abrechnung und Verwaltung und zu Nutzungseinschränkungen für selbstgehostete Runner unter Informationen zu selbstgehosteten Runnern.
Wenn du den eindeutigen Bezeichner eines Auftrags in einer Workflowausführung ermitteln musst, kannst du die GitHub Enterprise Server-API verwenden. Weitere Informationen findest du unter REST-API-Endpunkte für GitHub Actions.
Festlegen einer ID für einen Auftrag
Verwende jobs.<job_id>
, um deinem Auftrag einen eindeutigen Bezeichner zu geben. Der Schlüssel job_id
ist ein String und der Wert umfasst eine Zuordnung der Konfigurationsdaten für den Auftrag. Du musst <job_id>
mit einer Zeichenfolge ersetzen, die für das jobs
-Objekt eindeutig ist. <job_id>
muss mit einem Buchstaben oder _
beginnen und darf nur alphanumerische Zeichen, -
oder _
enthalten.
Beispiel: Erstellen von Aufträgen
In diesem Beispiel wurden zwei Aufträge erstellt und ihre job_id
-Werte sind my_first_job
und my_second_job
.
jobs:
my_first_job:
name: My first job
my_second_job:
name: My second job
Festlegen eines Namens für einen Auftrag
Mit jobs.<job_id>.name
legst du einen Namen für den Auftrag fest, der auf der Benutzeroberfläche von GitHub angezeigt wird.
Definieren von erforderlichen Aufträgen
Verwende jobs.<job_id>.needs
, um alle Aufträge zu identifizieren, die erfolgreich abgeschlossen sein müssen, bevor dieser Auftrag ausgeführt wird. Hier ist ein String oder ein Array mit Strings zulässig. Wenn ein Auftrag fehlschlägt oder übersprungen wird, werden alle Aufträge übersprungen, die diesen Auftrag benötigen, außer die Aufträge umfassen einen bedingte Ausdruck, mit dem der Auftrag dennoch fortgesetzt wird. Wenn eine Ausführung eine Reihe von Aufträgen enthält, die voneinander abhängig sind, wird ein Fehler oder eine Auslassung auf alle Aufträge in der Abhängigkeitskette ab dem Fehler- oder Auslassungspunkt angewendet. Wenn ein Auftrag auch dann ausgeführt werden soll, wenn ein Auftrag, von dem er abhängig ist, nicht erfolgreich war, verwenden Sie den bedingten always()
-Ausdruck in jobs.<job_id>.if
.
Beispiel: Erfordern erfolgreicher abhängiger Aufträge
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
In diesem Beispiel muss job1
erfolgreich abgeschlossen sein, bevor job2
beginnt, und job3
wartet darauf, dass job1
und job2
angeschlossen werden.
Die Aufträge in diesem Beispiel werden sequenziell ausgeführt:
job1
job2
job3
Beispiel: Nicht Erfordern erfolgreicher abhängiger Aufträge
jobs:
job1:
job2:
needs: job1
job3:
if: ${{ always() }}
needs: [job1, job2]
In diesem Beispiel verwendet job3
den bedingten Ausdruck always()
, sodass er immer nach Abschluss von job1
und job2
ausgeführt wird, unabhängig davon, ob sie erfolgreich waren. Weitere Informationen findest du unter Auswerten von Ausdrücken in Workflows und Aktionen.