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.
- Para cancelar una ejecución de flujo de trabajo, el servidor vuelve a evaluar las condiciones
ifpara todos los trabajos que se ejecutan actualmente. Si la condición se evalúa comotrue, el trabajo no se cancelará. Por ejemplo, la condiciónif: always()se evaluaría como verdadero y el trabajo sigue ejecutándose. Cuando no hay condición, es equivalente a una condiciónif: success(), que solo se ejecuta si el paso anterior ha finalizado correctamente. - Para las tareas que necesitan cancelarse, el servidor envía un mensaje de cancelación a todas las máquinas ejecutoras involucradas.
- Para los trabajos que siguen en ejecución, el servidor vuelve a evaluar las condiciones
ifpara los pasos sin finalizar. Si la condición se evalúa comotrue, el paso continúa ejecutándose. Puedes usar la expresióncancelledpara aplicar una comprobación de estado decancelled(). Para más información, consulta Evaluación de expresiones en flujos de trabajo y acciones. - Para los pasos que necesitan ser cancelados, la máquina runner envía
SIGINT/Ctrl-Cal proceso de entrada del paso (nodepara acciones de JavaScript,dockerpara acciones de contenedor ybash/cmd/pwdcuando se usarunen un paso). Si el proceso no sale en 7500 ms, el ejecutor enviaráSIGTERM/Ctrl-Breakal proceso y, después, esperará 2500 ms hasta que el proceso salga. Si el proceso aún está ejecutándose, el sistema mata el árbol de procesos. - 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.