ワークフローの実行を取り消すとき、ワークフローの実行に関連するリソースを使用する他のソフトウェアを実行している可能性があります。 ワークフロー実行に関連するリソースを解放するため、GitHub がワークフロー実行をキャンセルする際のステップを知っておくと役立つ場合があります。
- ワークフロー実行をキャンセルするために、サーバーは現在実行中のすべてのジョブに対して
if条件を再評価します。 条件がtrueに評価された場合、ジョブはキャンセルされません。 たとえば、if: always()は true に評価され、ジョブの実行は継続されます。 条件がない場合は条件if: success()と同じなので、前のステップが正常に終了した場合にのみ実行されます。 - キャンセルする必要があるジョブについては、サーバーは、キャンセルする必要があるジョブを持つすべてのランナー マシンにキャンセル メッセージを送信します。
- 実行を継続するジョブの場合、サーバーは未完了のステップの
if条件を再評価します。 条件がtrueに評価された場合、ステップは引き続き実行されます。cancelled式を使用して、cancelled()のステータス チェックを適用できます。 詳しくは、「ワークフローとアクションで式を評価する」をご覧ください。 - 取り消す必要があるステップについて、ランナー マシンはステップのエントリ プロセス (JavaScript アクションの場合は
node、コンテナー アクションの場合はdocker、ステップでrunを使っている場合はbash/cmd/pwd) にSIGINT/Ctrl-Cを送信します。 プロセスが 7500 ms 以内に終了しない場合、ランナーはSIGTERM/Ctrl-Breakをプロセスに送信し、プロセスが終了するまで2500 ms 待ちます。 プロセスがそれでも実行中のままなら、ランナーはプロセスツリーを強制終了します。 - 5 分の取り消しタイムアウト期間が経過すると、サーバーはまだ実行しているすべてのジョブとステップを強制的に終了します。