Exploración de los ejecutores
Los ejecutores de GitHub son los entornos de proceso que ejecutan los flujos de trabajo de Acciones de GitHub. Comprender a los ejecutores es fundamental para optimizar el rendimiento, administrar los costes y garantizar la seguridad en las canalizaciones de CI/CD.
Introducción a los tipos de ejecutor
GitHub proporciona dos opciones de ejecutor distintas, cada una adecuada para escenarios diferentes:
Ejecutores hospedados en GitHub
- Administrado por GitHub: GitHub mantiene y actualiza completamente
- Escalado a petición: aprovisionado automáticamente para cada trabajo
- Varios entornos: Ubuntu, Windows y macOS disponibles
- Herramientas integradas: preinstalado con herramientas de desarrollo comunes
- Facturación basada en el uso: pago solo por lo que usa
Ejecutores autohospedados
- Administrado por usted: Control total sobre el entorno y la configuración
- Entornos personalizados: instale cualquier configuración de software o hardware necesaria
- Infraestructura privada: se ejecuta en sus propias máquinas o instancias en la nube
- Sin límites de tiempo: los trabajos se pueden ejecutar siempre y cuando sea necesario.
- Costos fijos: sin cargos por minuto después de la instalación
Consideraciones de seguridad
Importante
Nunca use ejecutores autohospedados con repositorios públicos. Esto crea una vulnerabilidad de seguridad grave en la que los actores malintencionados podrían ejecutar código en la infraestructura a través de pull requests.
Patrones de uso seguro:
- Use ejecutores de prueba interna solo con repositorios privados
- Implementar el aislamiento y la supervisión de red adecuados
- Actualizar periódicamente el software y las dependencias del ejecutor
- Uso de máquinas dedicadas que no contienen datos confidenciales
Ejecutores hospedados en GitHub
Los ejecutores hospedados en GitHub proporcionan una solución de mantenimiento cero para ejecutar los flujos de trabajo. GitHub controla toda la administración de la infraestructura, lo que le permite centrarse en el código en lugar de en la administración del servidor.
Entornos disponibles
GitHub ofrece varios tipos de ejecutor con distintas especificaciones:
| Tipo de corredor | Versión del sistema operativo | Procesador | RAM | Storage |
|---|---|---|---|---|
ubuntu-latest |
Ubuntu 22.04 | CPU de 4 núcleos | 16 GB | SSD de 14 GB |
windows-latest |
Windows Server 2022 | CPU de 4 núcleos | 16 GB | SSD de 14 GB |
macos-latest |
macOS 14 | CPU de 4 núcleos | 14 GB | SSD de 14 GB |
macos-13 |
macOS 13 | CPU de 4 núcleos | 14 GB | SSD de 14 GB |
Software preinstalado
Cada runner incluye un conjunto completo de herramientas de desarrollo.
Herramientas comunes en todas las plataformas:
- Git, Docker, Node.js, Python, Java, .NET
- Administradores de paquetes (npm, pip, Maven, NuGet)
- Herramientas y compiladores de compilación
- Marcos de pruebas
Herramientas específicas de la plataforma:
-
Ubuntu:
apt, ,snapvarias utilidades de Linux - Windows: PowerShell, Visual Studio Build Tools, Windows SDK
- macOS: Xcode, Homebrew, CocoaPods
Sugerencia
Compruebe el inventario de software completo en el repositorio de imágenes del ejecutor o vea la sección "Configurar trabajo" en los registros de flujo de trabajo.
Consideraciones y límites de uso
Comprender estos límites le ayuda a planear los flujos de trabajo de forma eficaz:
- Tiempo de espera del trabajo: 6 horas máximas por trabajo
- Tiempo de espera del flujo de trabajo: 35 días máximo (incluido el tiempo de espera)
- Trabajos simultáneos: varía según el plan de GitHub (20 para gratis, 180 para Pro)
- Almacenamiento: 500 MB de almacenamiento de artefactos por trabajo
Prerrequisitos
Antes de usar ejecutores hospedados en GitHub, los usuarios deben tener un repositorio de GitHub donde puedan definir flujos de trabajo mediante Acciones de GitHub. Los ejecutores están disponibles para todos los usuarios de GitHub con acceso a Acciones de GitHub.
Configuración
A diferencia de los ejecutores autohospedados, los hospedados en GitHub se configuran automáticamente como parte de una ejecución de flujo de trabajo individual. Los usuarios definen flujos de trabajo como archivos con formato YAML almacenados en el directorio .github/workflows en repositorios de GitHub. Dentro de la configuración del flujo de trabajo, los usuarios especifican el entorno de ejecutor deseado, incluidas las dependencias del sistema operativo y del software. Los ejecutores con especificaciones coincidentes se configuran a petición cada vez que se desencadena el flujo de trabajo, con un ejecutor por trabajo. Los desencadenadores pueden ser manuales o automáticos, en función de eventos como inserciones de código, solicitudes de incorporación de cambios o eventos de distribución del repositorio.
Los ejecutores hospedados en GitHub se autentican con GitHub mediante tokens o credenciales proporcionadas por GitHub Actions. Se basan en la conectividad integrada para comunicarse con la plataforma de GitHub y para descargar artefactos de flujo de trabajo.
Mantenimiento
GitHub administra las actualizaciones y el mantenimiento de los ejecutores hospedados en GitHub, lo que garantiza que permanecen up-to-date con las versiones de software y las revisiones de seguridad más recientes. Las herramientas de software incluidas en los ejecutores se actualizan semanalmente. Las actividades del ejecutor están supervisando y registrando, lo que facilita el seguimiento de las ejecuciones de flujo de trabajo y la solución de problemas.
Licencias y costos
Los ejecutores hospedados en GitHub se incluyen en los precios de Acciones de GitHub, con facturación basada en el uso durante minutos más allá del nivel gratis. Los usuarios se benefician del escalado automatizado y rentable, ya que GitHub aprovisiona y desasigna automáticamente los ejecutores en función de la demanda.
Ejecutores autohospedados
Los ejecutores autohospedados proporcionan un control completo sobre el entorno de ejecución. Son ideales cuando necesita configuraciones específicas de hardware o de software, o quiere reducir los costos de los procesos de trabajo de alto volumen.
Cuándo usar ejecutores autohospedados
Perfecto para:
- Requisitos de hardware específicos: aceleración de GPU, memoria elevada o procesadores personalizados
- Acceso a la red privada: conexión a bases de datos internas, API o servicios
- Software personalizado: herramientas propietarias preinstaladas o versiones de software específicas
- Optimización de costos: flujos de trabajo de gran volumen en los que la facturación por minuto resulta costosa
- Requisitos de cumplimiento: los datos deben permanecer dentro de la infraestructura.
No se recomienda para:
- Repositorios públicos (riesgo de seguridad)
- Flujos de trabajo ocasionales o de bajo volumen
- Teams sin experiencia de administración de infraestructura
Opciones de implementación
Puede ejecutar ejecutores autohospedados en varias plataformas:
- Servidores físicos: hardware local
- Máquinas virtuales: VMware, Hyper-V u otros hipervisores
- Instancias en la nube: AWS EC2, máquinas virtuales de Azure, Google Compute Engine
- Contenedores: contenedores de Docker (con limitaciones)
- Kubernetes: Uso del Actions Runner Controller
Proceso de instalación
La configuración de un ejecutor autohospedado implica estos pasos clave:
- Descarga la aplicación del ejecutor desde el repositorio de ejecutores de GitHub
- Configuración del ejecutor con tokens de autenticación
- Instalación como servicio (recomendado para producción)
- Configuración de etiquetas para dirigirse a ejecutores específicos en flujos de trabajo
Requisitos de red:
- Acceso HTTPS saliente (443) a GitHub.com
- Acceso HTTPS saliente (443) a objects.githubusercontent.com
- No se requieren conexiones entrantes
Ámbitos y administración del ejecutor
Los ejecutores autohospedados se pueden registrar en diferentes niveles de organización:
| Ámbito | Nivel de acceso | Caso de uso |
|---|---|---|
| Repositorio | Solo repositorio único | Entornos de desarrollo y pruebas |
| Organización | Todos los repositorios de la organización | Recursos del equipo compartido |
| Empresa | Todas las organizaciones de la empresa | Administración centralizada de la infraestructura |
Destinatarios de ejecutores en flujos de trabajo
Use etiquetas para especificar qué ejecutor debe ejecutar el trabajo:
jobs:
build:
runs-on: [self-hosted, linux, x64, gpu]
steps:
- name: Build with GPU acceleration
run: ./build-with-cuda.sh
Responsabilidades de mantenimiento
Como propietario del ejecutor, usted es responsable de:
- Actualizaciones de seguridad: mantener actualizada la aplicación del ejecutor y el sistema operativo
- Administración de software: instalar y mantener las herramientas de desarrollo necesarias
- Supervisión: realizar un seguimiento de las métricas de estado y rendimiento del ejecutor
- Planeamiento de la capacidad: escalado de ejecutores en función de las demandas de flujo de trabajo
- Copia de seguridad y recuperación: asegúrese de que se realiza una copia de seguridad de las configuraciones del ejecutor
Consideraciones sobre los costos
Aunque los ejecutores autohospedados no incurren en cargos por minutos en Acciones de GitHub, tenga en cuenta estos costes:
- Infraestructura: servidores, instancias en la nube o orquestación de contenedores
- Mantenimiento: tiempo invertido en actualizaciones, supervisión y solución de problemas
- Seguridad: herramientas y procesos adicionales para la administración segura del ejecutor
- Alimentación y refrigeración: para implementaciones locales
Sugerencias de optimización de costos:
- Uso del escalado automático para ejecutores basados en la nube
- Implementación de la agrupación de ejecutores para varios repositorios
- Programar el apagado de los ejecutores durante las horas no laborables
- Supervisar la utilización de recursos para ajustar el tamaño de las instancias