Skip to main content

Abbrechen eines Workflows

Du kannst eine laufende Workflowausführung abbrechen. Wenn du eine Workflowausführung abbrichst, bricht GitHub alle Aufträge und Schritte ab, die Teil dieses Workflows sind.

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.

Um diese Schritte auszuführen, ist Schreibzugriff auf das Repository erforderlich.

Einen Workflow-Lauf abbrechen

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Klicke unter dem Namen deines Repositorys auf Aktionen.

    Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.

  3. Klicke in der linken Seitenleiste auf den Workflow, den Du sehen willst.

    Screenshot der linken Randleiste der Registerkarte „Aktionen“. Ein Workflow, „CodeQL“, ist dunkelorange umrandet.

  4. Klicke in der Liste der Workflowausführungen auf den Namen der queued- oder in progress-Ausführung, die du abbrechen möchtest.

  5. Klicke in der oberen rechten Ecke des Workflows auf Workflow abbrechen.

    Screenshot: Zusammenfassung für einen Workflow, der derzeit ausgeführt wird. Die Schaltfläche „Workflow abbrechen“ ist dunkelorange umrandet.

Schritte, die GitHub zum Abbrechen einer Workflowausführung ausführt

Beim Abbrechen der Workflowausführung führst du möglicherweise andere Software aus, die im Zusammenhang mit der Workflowausführung stehende Ressourcen verwendet. Du kannst möglicherweise leichter im Zusammenhang mit der Workflowausführung stehende Ressourcen freigeben, wenn du die Schritte kennst, die GitHub ausführt, um eine Workflowausführung abzubrechen.

  1. Um die Ausführung des Workflows abzubrechen, bewertet der Server die if-Bedingungen für alle derzeit ausgeführten Aufträge neu. Wenn die Bedingung als true ausgewertet wird, wird der Auftrag nicht abgebrochen. Wenn z. B. die Bedingung if: always() als „true“ ausgewertet wird, wird der Auftrag weiterhin ausgeführt. Wenn keine Bedingung vorhanden ist, entspricht dies der Bedingung if: success(), d. h. die Ausführung findet nur bei erfolgreichem Abschluss des vorherigen Schritts statt.
  2. Für Aufträge, die abgebrochen werden müssen, sendet der Server eine Abbruchnachricht an alle Runnercomputer mit Aufträgen, die abgebrochen werden müssen.
  3. Für Aufträge, die weiterhin ausgeführt werden, bewertet der Server die if-Bedingungen für die nicht abgeschlossenen Schritte neu. Wenn die Bedingung als true ausgewertet wird, wird der Schritt weiterhin ausgeführt. Sie können den cancelled-Ausdruck verwenden, um eine Statusüberprüfung von cancelled() durchzuführen. Weitere Informationen findest du unter Auswerten von Ausdrücken in Workflows und Aktionen.
  4. Für Schritte, die abgebrochen werden müssen, sendet der Runnercomputer SIGINT/Ctrl-C an den Einstiegsprozess des Schritts (node für Javascript-Aktion, docker für Containeraktion und bash/cmd/pwd bei Verwendung von run in einem Schritt). Wenn der Prozess innerhalb von 7.500 ms nicht beendet wird, sendet der Runner SIGTERM/Ctrl-Break an den Prozess. Warte dann 2.500 ms, bis der Prozess beendet wird. Wenn der Prozess noch ausgeführt wird, beendet der Runner die Prozessstruktur.
  5. Nach Ablauf des Abbruch-Timeoutzeitraums von 5 Minuten erzwingt der Server das Beenden aller Aufträge und Schritte, die die Ausführung nicht beenden oder den Abbruchprozess nicht abschließen.