Alojamiento de runners de CI
Respuesta
Los runners de CI autogestionados ejecutan tus pipelines de build en servidores que controlas tú, en lugar de en un pool compartido del proveedor. Un plan Incognito VPS VECTOR por 14 $ al mes suele superar a un runner alojado, a la vez que elimina por completo la facturación por minuto y las colas de espera.
| Escenario | Mínimo |
|---|---|
| Proyecto pequeño | 2 vCPU, 4 GB de RAM |
| Monorepo típico | 6 vCPU, 16 GB de RAM |
| Compilación pesada (Rust, C++) | 16 vCPU, 64 GB de RAM |
| Caché de capas de Docker | 140 GB+ NVMe |
La aritmética suele ser decisiva
Los minutos de CI alojados parecen baratos hasta que los cuentas. Un equipo que ejecuta unos cientos de builds al mes en runners alojados de 2 núcleos gasta habitualmente más de lo que cuesta un VPS dedicado de 6 núcleos, y además obtiene builds más lentos para su dinero, porque los runners alojados son máquinas modestas sujetas a contención.
El otro ahorro es de tiempo, no de dinero. Un runner autogestionado no tiene cola: tu trabajo comienza cuando haces push. En un pool alojado con mucha carga, esperar varios minutos por un runner es normal, y ese retraso afecta a cada desarrollador y a cada push.
El almacenamiento en caché es donde está la verdadera aceleración
El NVMe local persistente cambia la economía de CI más que el número bruto de núcleos. Las capas de Docker, los registros de Cargo, node_modules, las cachés de Gradle y ccache sobreviven entre ejecuciones en un runner autogestionado, mientras que un runner alojado comienza limpio y vuelve a descargarlo todo.
Para un proyecto grande en Rust o C++, esto supone con frecuencia una reducción de cinco a diez veces en el tiempo de build en pared, y es totalmente gratis.
Aislamiento, porque los runners ejecutan código arbitrario
Un runner autogestionado ejecuta lo que haya en el pipeline, lo que para un repositorio público significa lo que un colaborador ponga en una pull request. Nunca conectes un runner autogestionado a un repositorio público sin ejecución efímera y aislada.
Usa runners efímeros en contenedores o VMs de vida corta, no des al runner credenciales que no necesite, y colócalo en un servidor que no tenga nada más. Una máquina de 14 $ por proyecto es un seguro barato contra un pipeline comprometido que llegue al resto de tu infraestructura.
Preguntas frecuentes
01 ¿Qué plan para un runner de CI?
VECTOR (4 vCPU, 8 GB) para un proyecto típico; BASTION (6 vCPU, 16 GB) para un monorepo o compilación pesada. La caché NVMe persistente importa más que el número de núcleos para la mayoría de los pipelines.
02 ¿Funciona con GitHub Actions?
Sí. Registra la máquina como runner autogestionado y apúntala con runs-on. GitLab, Forgejo, Woodpecker y Drone funcionan igual.
03 ¿Es seguro un runner autogestionado para repositorios públicos?
No sin aislamiento efímero. Una pull request puede ejecutar código arbitrario en el runner. Usa contenedores efímeros o VMs desechables, y nunca concedas credenciales que el pipeline no necesite.
04 ¿Cuánto más rápido es?
Normalmente de dos a cuatro veces en cómputo bruto, y de cinco a diez veces en pipelines con mucha caché, porque las capas de Docker y las cachés de dependencias persisten entre ejecuciones en lugar de descargarse de nuevo.
Relacionado