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 true y el trabajo continúa en ejecución. Cuando no hay condición, es equivalente a una condiciónif: success(), que solo se ejecuta si el paso anterior ha finalizado correctamente. - 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.
- 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 obtener los pasos que se deben cancelar, la máquina del ejecutor 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 ejecutor finalizará abruptamente el árbol de proceso. - 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.