Skip to main content

Cancelar un flujo de trabajo

Puedes cancelar una ejecución de flujo de trabajo que esté en curso. Cuando cancelas una ejecución de flujo de trabajo, GitHub cancela todsos los jobs y pasos que son parte de ésta.

Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.

Se requiere tener acceso de escritura en el repositorio para llevar a cabo estos pasos.

Cancelar una ejecución de flujo de trabajo

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Acciones.

    Captura de pantalla de las pestañas del repositorio "github/docs". La pestaña "Proyectos" aparece resaltada con un contorno naranja.

  3. En la barra lateral izquierda, da clic en el flujo de trabajo que quieras ver.

    Captura de pantalla de la barra lateral izquierda de la pestaña "Acciones". Un flujo de trabajo, "CodeQL", se destaca en naranja oscuro.

  4. Desde la lista de ejecuciones de flujo de trabajo, haga clic en el nombre de la ejecución de queued o in progress que quiera cancelar.

  5. En la esquina superior derecha del flujo de trabajo, haga clic en Cancelar flujo de trabajo.

    Captura de pantalla que muestra el resumen de un flujo de trabajo que se está ejecutando actualmente. El botón "Cancelar flujo de trabajo" está resaltado con un contorno naranja oscuro.

Pasos que toma GitHub para cancelar una ejecución de flujo de trabajo

Cuando cancelas una ejecución de flujo de trabajo, tal vez estés ejecutando otro software que utiliza recursos que se relacionan con ésta. 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, consulte «Evaluación de expresiones en flujos de trabajo y acciones».
  4. Para los pasos que se deben cancelar, la máquina del ejecutor envía SIGINT/Ctrl-C al proceso de entrada del paso (node para la acción javascript, docker para la acción contenedora 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 de los 5 minutos del periodo de expiración de plazo de cancelación, el servidor forzará la terminación de todos los jobs y pasos que no hayan finalizado la ejecución o que hayan fallado en completar el proceso de cancelación.