Saltar al contenido principal

🖥️ 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:

  1. Accede a la configuración del repositorio.
  2. Entra en la sección Actions.
  3. Abre el apartado Runners.
  4. Selecciona Self Hosted Runners.
  5. 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.