Skip to main content

Referencia de cancelación de flujo de trabajo

Busca información sobre los pasos que realiza GitHub para cancelar una ejecución de flujo de trabajo.

Cuando cancelas una ejecución de flujo de trabajo, es probable que ejecutes otro software que utiliza recursos relacionados con ella. Para ayudarte a liberar los recursos relacionados con dicha ejecución de flujo de trabajo, podría ser útil entender los pasos que realiza GitHub para cancelar una ejecución de flujo de trabajo.

  1. Para cancelar una ejecución de flujo de trabajo, el servidor vuelve a evaluar las condiciones if para todos los trabajos que se ejecutan actualmente. Si la condición se evalúa como true, el trabajo no se cancelará. Por ejemplo, la condición if: always() se evaluaría como true y el trabajo continúa en ejecución. Cuando no hay condición, es equivalente a una condición if: success(), que solo se ejecuta si el paso anterior ha finalizado correctamente.
  2. Para los jobs que necesitan cancelarse, el servidor envía un mensaje de cancelación a todas las máquinas ejecutoras con jobs que necesitan cancelarse.
  3. Para los trabajos que siguen en ejecución, el servidor vuelve a evaluar las condiciones if para los pasos sin finalizar. Si la condición se evalúa como true, el paso continúa ejecutándose. Puedes usar la expresión cancelled para aplicar una comprobación de estado de cancelled(). Para más información, consulta Evaluación de expresiones en flujos de trabajo y acciones.
  4. Para obtener los pasos que se deben cancelar, la máquina del ejecutor envía SIGINT/Ctrl-C al proceso de entrada del paso (node para acciones de JavaScript, docker para acciones de contenedor y bash/cmd/pwd cuando se usa run en un paso). Si el proceso no sale en 7500 ms, el ejecutor enviará SIGTERM/Ctrl-Break al proceso y, después, esperará 2500 ms hasta que el proceso salga. Si el proceso aún está ejecutándose, el ejecutor finalizará abruptamente el árbol de proceso.
  5. Después del período de tiempo de espera de cancelación de cinco minutos, el servidor finalizará forzosamente todos los trabajos y pasos que todavía estén en ejecución.