Beim Abbrechen einer 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.
- 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 alstrue
ausgewertet wird, wird der Auftrag nicht abgebrochen. Wenn z. B. die Bedingungif: always()
als „true“ ausgewertet wird, wird der Auftrag weiterhin ausgeführt. Wenn keine Bedingung vorhanden ist, entspricht dies der Bedingungif: success()
, d. h. die Ausführung findet nur bei erfolgreichem Abschluss des vorherigen Schritts statt. - 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.
- 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 alstrue
ausgewertet wird, wird der Schritt weiterhin ausgeführt. Sie können dencancelled
-Ausdruck verwenden, um eine Statusüberprüfung voncancelled()
durchzuführen. Weitere Informationen finden Sie unter Auswerten von Ausdrücken in Workflows und Aktionen. - Für Schritte, die abgebrochen werden müssen, sendet der Runnercomputer
SIGINT/Ctrl-C
an den Einstiegsprozess des Schritts (node
für JavaScript-Aktionen,docker
für Containeraktionen undbash/cmd/pwd
bei Verwendung vonrun
in einem Schritt). Wenn der Prozess innerhalb von 7.500 ms nicht beendet wird, sendet der RunnerSIGTERM/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. - Nach Ablauf des fünfminütigen Abbruchtimeouts erzwingt der Server die Beendigung alle Aufträge und Schritte, die noch ausgeführt werden.