2026 — presente
Runners de GitHub Actions self-hosted, escalables
Autor / Open Source
Impacto
Escalar de 1 a N runners es cambiar un número en el comando, no editar un archivo YAML con N bloques copiados y pegados — y un crash ya no deja un runner fantasma ocupando un slot en GitHub.
El problema
Declarar N runners self-hosted de GitHub Actions a mano significa N
servicios idénticos copiados y pegados en un docker-compose.yml. Además,
un crash o un redeploy puede dejar un contenedor registrado en GitHub como
disponible aunque ya no exista — un runner "zombi" que GitHub sigue
intentando usar.
El enfoque
Un único servicio de Docker Compose, parametrizado con la URL del repo, se
escala con docker compose up --scale github-runner=N. Combinado con un
modo EPHEMERAL=true, cada runner se registra para un único job y se
desregistra solo al terminar, lo que resuelve el problema de los runners
zombis de raíz. Pensado para no depender de runners hosteados por GitHub
cuando el trabajo necesita un ambiente específico, o simplemente para no
pagar minutos de CI en repos con builds pesados.
Resultado
Escalar de 1 a N runners es cambiar un número en el comando, no editar un archivo YAML con N bloques copiados y pegados — y un crash ya no deja un runner fantasma ocupando un slot en GitHub.