Github Actions: Re-intentar automáticamente los jobs de CI que un reclamo de spot instance mató
Описание и применение
Автоматически перезапускает CI‑jobs, которые прерываются из‑за потери spot‑инстанса, сохраняя реальные ошибки тестов.
Задача
Los runners spot ARM64 autoalojados pueden ser terminados por AWS durante la ejecución, marcando los jobs como fallidos sin que haya errores de prueba reales.
Результат
Los jobs que fallan por interrupciones de spot se re-ejecutan automáticamente, reduciendo el tiempo de inactividad y manteniendo la visibilidad de fallos reales.
Рабочий процесс
- 1. Crear un listener de workflow_run que se dispara cuando un run termina.
- 2. Si el run concluye con failure o cancelled, descargar los logs de los jobs fallidos usando la API de GitHub.
- 3. Buscar líneas de error específicas que indican pérdida de runner (ej. "The runner has received a shutdown signal").
- 4. Si se detecta una pérdida, invocar la acción "rerun-failed-jobs" para re-ejecutar los jobs fallidos.
- 5. Evitar re-ejecución si existe un run más nuevo, si es el intento 3 o posterior, o si el log no se pudo leer.
Доказательства
Un deploy de backend se puso en rojo en Tests (shard 1/2). El log crudo…
Si una hace match, llama a rerun-failed-jobs. Si ninguna hace match, no hace nada y la corrida se queda en rojo.
- Дата записи: 2026-09-21T09:30:38.586Z