James Valencia
← Proyectos

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.

DockerDocker ComposeGitHub ActionsShell

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.