Skip to main content

工作流取消指南

查找有关 GitHub 取消工作流运行所需步骤的信息。

取消工作流运行时,你可能正在运行使用与该工作流运行相关的资源的其他软件。 为了帮助您释放与工作流程运行相关的资源,它可能有助于了解 GitHub 为取消工作流程运行而执行的步骤。

  1. 要取消工作流运行,服务器将重新评估所有正在运行的作业的 if 条件。 如果条件评估为 true,作业将不会取消。 例如,条件 if: always() 评估为 true 时,作业会继续运行。 没有条件时,则等同于条件 if: success(),仅在上一步已成功完成时才会运行。
  2. 对于需要取消的作业,服务器向包含需取消作业的所有运行器机器发送取消消息。
  3. 对于正在继续运行的作业,服务器将重新评估未完成步骤的if条件。 如果条件评估为 true,则步骤继续运行。 可以使用 cancelled 表达式来应用 cancelled() 状态检查。 有关详细信息,请参阅“对工作流和操作中的表达式求值”。
  4. 对于需要取消的步骤,运行器计算机会将 SIGINT/Ctrl-C 发送到步骤的入口进程(对于 JavaScript 操作,为 node;对于容器操作,为 docker;在步骤中使用 bash/cmd/pwd 时,为 run)。 如果进程未在 7500 毫秒内退出,运行器将发送 SIGTERM/Ctrl-Break 到此进程,然后等待 2500 毫秒让进程退出。 如果该进程仍在运行,执行器会终止进程树。
  5. 在 5 分钟取消超时窗口后,服务器将强制终止仍在运行的所有任务和步骤。