Exploración de ejecutores
Los ejecutores de GitHub son recursos de proceso que ejecutan flujos de trabajo de Acciones de GitHub. Cada ejecutor puede ejecutar un solo trabajo cada vez. Permiten a los desarrolladores realizar tareas de compilación, prueba e implementación directamente desde repositorios de GitHub. Hay dos tipos principales de ejecutores de GitHub:
- Los ejecutores hospedados en GitHub son recursos de proceso virtualizados o en contenedores proporcionados y administrados por GitHub.
- Los ejecutores autohospedados son recursos de proceso físicos, virtualizados o en contenedores que los usuarios y organizaciones de GitHub aprovisionan y administran ellos mismos.
Cada tipo tiene algunas características únicas, características varias funcionalidades distintas y garantiza varias consideraciones diferentes.
Es importante tener en cuenta que GitHub recomienda encarecidamente usar ejecutores autohospedados en repositorios públicos. Al hacerlo, se presenta un riesgo de seguridad significativo, ya que puede permitir que cualquier persona ejecute código en el entorno privado de la organización.
Ejecutores hospedados en GitHub
Los ejecutores hospedados en GitHub ofrecen una solución cómoda para ejecutar flujos de trabajo dentro de Acciones de GitHub, lo que elimina la necesidad de administrar los componentes de hardware y software subyacentes. Están diseñados para escalarse automáticamente en función de la demanda, lo que garantiza un rendimiento óptimo durante los períodos de uso máximo. GitHub proporciona varios entornos preconfigurados para ejecutores hospedados en GitHub, que abarcan diferentes configuraciones de software y sistemas operativos, como Ubuntu Linux, Microsoft Windows y macOS.
Los ejecutores hospedados en GitHub incluyen las herramientas integradas predeterminadas del sistema operativo. Por ejemplo, los ejecutores de Ubuntu y macOS incluyen grep, buscar y cuál. Para identificar todas las demás herramientas preinstaladas en los ejecutores, los usuarios pueden revisar la lista de materiales de software (SBOM) para cada compilación de las imágenes de ejecutor de Windows y Ubuntu. Como alternativa, los usuarios pueden revisar la subsección Runner Image de la sección configurar trabajo en los registros de flujo de trabajo. El vínculo que sigue a la entrada Software incluido describe todas las herramientas preinstaladas del ejecutor que ejecutó el flujo de trabajo. También es posible instalar software adicional en ejecutores hospedados en GitHub mediante la creación de un trabajo que instale los paquetes como parte del flujo de trabajo existente.
Los ejecutores hospedados en GitHub se ejecutan en la infraestructura en la nube de GitHub, aprovechando máquinas virtuales o contenedores para ejecutar flujos de trabajo. Cada ejecución de flujo de trabajo está aislada dentro de su propio entorno, lo que garantiza la seguridad y la reproducibilidad. Los ejecutores hospedados en GitHub se integran perfectamente con Acciones de GitHub, lo que permite a los usuarios hacer referencia a ellos directamente dentro de los flujos de trabajo hospedados en repositorios de GitHub.
Hay algunos límites en el uso de Acciones de GitHub al usar ejecutores hospedados en GitHub. En concreto, cada trabajo de un flujo de trabajo tiene el máximo de 6 horas de tiempo de ejecución. Si un job llega a este límite, éste se terminará y fallará en completarse. Cada ejecución de flujo de trabajo está limitada a 35 días. Si una ejecución de flujo de trabajo alcanza este límite, se cancela su ejecución. Este periodo incluye la duración de la ejecución y el tiempo invertido en la espera y la aprobación.
Requisitos previos
Antes de implementar 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.
Implementación
A diferencia de los ejecutores autohospedados, los hospedados en GitHub se aprovisionan 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 Acciones de GitHub. 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 actualizados 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
En comparación con los ejecutores hospedados en GitHub, los autohospedados proporcionan un mayor control y opciones de personalización, con entornos de ejecución capaces de adaptar una gama más amplia de requisitos. Se pueden implementar de forma local o en la nube, en función de criterios como la conectividad de red, el costo y la disponibilidad de los recursos.
Los usuarios aprovisionan y administran los ejecutores autohospedados, lo que les proporciona control total sobre el entorno de ejecución. Son totalmente personalizables, incluidas las especificaciones de hardware, las configuraciones de software y la configuración de red. También facilitan la integración con las herramientas y la infraestructura existentes, lo que minimiza la posibilidad de incidencias de compatibilidad e interoperabilidad.
A diferencia de los ejecutores hospedados en GitHub, no hay límites en el tiempo que se tarda en completar la ejecución de trabajos individuales y las ejecuciones de flujo de trabajo.
Requisitos previos
Los usuarios deben configurar y configurar ejecutores autohospedados en su infraestructura elegida, incluida la instalación del software del ejecutor y las dependencias de software adicionales. El código fuente de los ejecutores autohospedados está disponible como un proyecto de código abierto en GitHub en https://github.com/actions/runner. Cada ejecutor autohospedado actúa como agente que se comunica con Acciones de GitHub para ejecutar flujos de trabajo.
Los ejecutores autohospedados requieren conectividad de red saliente, credenciales de autenticación y autorización para acceder a la plataforma GitHub y descargar artefactos de flujo de trabajo. En función de la ubicación de los ejecutores, puede que sea necesario configurar reglas de firewall para satisfacer estos requisitos.
Implementación
Al igual que con los ejecutores hospedados en GitHub, la implementación implica definir flujos de trabajo con formato YAML y almacenarlos en el directorio .github/workflows en repositorios de GitHub. Sin embargo, para que los flujos de trabajo usen ejecutores autohospedados, los usuarios deben registrarlos primero, proporcionando los tokens de autenticación o credenciales necesarios. Como parte del registro, los usuarios especifican estas características como el nombre del ejecutor, las etiquetas y los parámetros del entorno de ejecución.
El registro puede tener lugar en diferentes niveles dentro de una empresa:
- Nivel de repositorio (repositorio único)
- Nivel organizativo (varios repositorios de una organización)
- Nivel empresarial (varias organizaciones en una empresa)
Mantenimiento
Los usuarios son responsables de actualizar y mantener ejecutores autohospedados, incluida la instalación de actualizaciones de software y revisiones de seguridad. El mantenimiento también implica supervisar el estado y el rendimiento del ejecutor, así como solucionar los problemas que surjan a lo largo del tiempo de ejecución del ejecutor.
Licencias y costos
Los ejecutores autohospedados no incurren en cargos de licencias adicionales más allá de los precios de Acciones de GitHub y los costos de infraestructura asociados, incluidos el proceso, el almacenamiento y la red. La optimización de la asignación y el uso de recursos se convierten en responsabilidad del usuario.