🖥️ Self-Hosted Runners en GitHub Actions
Hasta ahora hemos utilizado los runners proporcionados por GitHub para ejecutar nuestros workflows.
Sin embargo, existen situaciones en las que puede resultar más interesante ejecutar los procesos en una máquina propia.
GitHub Actions permite hacerlo mediante los llamados Self-Hosted Runners.
🤔 ¿Por qué utilizar un Self-Hosted Runner?
Aunque los runners de GitHub funcionan muy bien para la mayoría de proyectos, hay casos donde una infraestructura propia ofrece ventajas importantes.
Por ejemplo:
- Necesitas más memoria RAM
- Requieres acceso a recursos internos
- Debes utilizar hardware específico
- Quieres controlar completamente el entorno de ejecución
- Necesitas una configuración personalizada
En estos escenarios, ejecutar los workflows en una máquina propia puede resultar mucho más conveniente.
⚙️ Cambiando el entorno de ejecución
Normalmente los workflows utilizan máquinas gestionadas por GitHub.
Por ejemplo:
runs-on: ubuntu-latest
Sin embargo, es posible sustituir ese entorno por uno gestionado directamente por nosotros utilizando:
runs-on: self-hosted
De esta forma, GitHub enviará la ejecución del workflow a una máquina previamente registrada como runner.
🏃 Qué son los Runners
Los runners son las máquinas encargadas de ejecutar los workflows de GitHub Actions.
GitHub ofrece sus propios runners gestionados, pero también existen otras alternativas:
- Infraestructura propia
- Servidores dedicados
- Máquinas virtuales
- Servicios de terceros especializados en runners
Incluso existen empresas que ofrecen runners alternativos prometiendo:
- Mayor velocidad
- Mejor disponibilidad
- Infraestructura optimizada
- Configuraciones específicas para determinados casos de uso
🔧 Cómo crear un Self-Hosted Runner
La configuración se realiza desde la administración del repositorio.
Dentro de GitHub:
- Accede a la configuración del repositorio.
- Entra en la sección Actions.
- Abre el apartado Runners.
- Selecciona Self Hosted Runners.
- Crea un nuevo runner.
GitHub proporciona una guía paso a paso para completar el proceso.
La instalación está disponible para:
- macOS
- Linux
- Windows
Una vez ejecutados los comandos indicados por GitHub, el runner aparecerá automáticamente como disponible para recibir trabajos.
⚠️ Importante: seguridad
GitHub muestra una advertencia muy clara al configurar runners propios.
No se recomienda utilizar Self-Hosted Runners en repositorios públicos.
La razón es sencilla.
Si un usuario malintencionado consigue ejecutar código dentro de un workflow, podría llegar a ejecutar procesos directamente en la máquina donde está instalado el runner.
Por ello, los Self-Hosted Runners suelen utilizarse principalmente en:
- Repositorios privados
- Infraestructuras controladas
- Entornos corporativos
- Sistemas internos
Antes de habilitarlos es importante comprender bien los riesgos de seguridad asociados.
🔒 Evita ejecutarlos como administrador
Durante la instalación también existen medidas de protección adicionales.
Por ejemplo:
- No se recomienda ejecutarlos como
sudo - Es preferible utilizar un usuario dedicado
- Deben configurarse únicamente los permisos necesarios
Seguir estas buenas prácticas reduce considerablemente la superficie de ataque del sistema.
🎯 Etiquetas y selección de runners
Una de las características más interesantes es que los runners pueden clasificarse mediante etiquetas.
Esto permite disponer de múltiples máquinas y elegir exactamente cuál utilizar para cada workflow.
Por ejemplo:
- Máquinas x64
- Equipos con GPU
- Sistemas ARM
- Apple Silicon
- Servidores con gran cantidad de RAM
GitHub puede seleccionar automáticamente el runner adecuado según las etiquetas configuradas.
🚀 Casos de uso habituales
Los Self-Hosted Runners resultan especialmente útiles cuando se necesitan características de hardware concretas.
Algunos ejemplos son:
🎮 Uso de GPU
Ideal para:
- Machine Learning
- Inteligencia Artificial
- Procesamiento de vídeo
- Entrenamiento de modelos
🍎 Apple Silicon
Necesario para determinados procesos específicos de macOS.
📱 Certificados y compilación para iOS
Algunos pipelines requieren acceso a certificados o configuraciones que no siempre están disponibles en los runners estándar.
💾 Grandes cantidades de memoria
Procesos pesados de compilación o análisis pueden beneficiarse enormemente de máquinas con más recursos.
📌 Ideas clave de esta clase
Quédate con estos conceptos:
- GitHub permite ejecutar workflows en máquinas propias.
- Estas máquinas reciben el nombre de Self-Hosted Runners.
- Se configuran desde la sección de administración del repositorio.
- Están disponibles para Linux, macOS y Windows.
- Permiten utilizar hardware específico y configuraciones personalizadas.
- Pueden etiquetarse para seleccionar runners concretos.
- Son especialmente útiles para GPU, ARM, Apple Silicon o grandes cantidades de RAM.
- Deben utilizarse con precaución por motivos de seguridad.
- No es recomendable utilizarlos en repositorios públicos.
🎯 Cuándo merece la pena utilizarlos
Los Self-Hosted Runners son una excelente opción cuando los runners estándar de GitHub no cubren las necesidades del proyecto.
Si necesitas más control, hardware específico o acceso a recursos internos, pueden convertirse en una pieza fundamental de tu infraestructura de automatización.
Eso sí, antes de desplegarlos conviene dedicar tiempo a comprender correctamente sus implicaciones de seguridad y aplicar las medidas adecuadas para proteger la máquina donde se ejecutarán.