Skip to main content

Migración de ejecutores autohospedados a ejecutores hospedados en GitHub

Aprenda a evaluar la infraestructura de CI actual y migrar flujos de trabajo de ejecutores autohospedados a ejecutores hospedados por GitHub.

Puede ejecutar flujos de trabajo en ejecutores hospedados por GitHub o autohospedados, o bien usar una combinación de tipos de ejecutor.

En este tutorial se explica cómo evaluar el uso actual de los ejecutores y luego migrar flujos de trabajo de ejecutores autohospedados a ejecutores hospedados en GitHub de forma eficaz.

1. Evaluación de la infraestructura de CI actual

La migración de ejecutores autohospedados a ejecutores más grandes hospedados por GitHub comienza con una evaluación exhaustiva de la infraestructura de CI actual. Si se toma el tiempo para hacer coincidir las especificaciones y los entornos cuidadosamente, minimizará el tiempo dedicado a solucionar problemas al empezar a ejecutar flujos de trabajo en diferentes ejecutores.

  1. Cree un inventario de cada especificación de máquina que se usa para ejecutar flujos de trabajo, incluidos núcleos de CPU, RAM, almacenamiento, arquitectura de chip y sistema operativo.
  2. Observe si alguno de los ejecutores forma parte de un grupo de ejecutores o tiene una etiqueta. Puede usar esta información para simplificar la migración de flujos de trabajo a nuevos ejecutores.
  3. Documente las imágenes personalizadas y las dependencias preinstaladas en las que se basan los flujos de trabajo, ya que influirán en la estrategia de migración.
  4. Identifique qué flujos de trabajo están dirigidos actualmente a ejecutores autohospedados y por qué. Por ejemplo, en las métricas de uso de GitHub Actions, utilice la pestaña Trabajos y filtre por etiqueta de ejecutor (como self-hosted o una etiqueta personalizada) para ver qué repositorios y trabajos usan esa etiqueta. Si necesita validar archivos de flujo de trabajo específicos, también puede usar la búsqueda de código para buscar archivos de flujo de trabajo que hagan referencia a runs-on: self-hosted u otras etiquetas autohospedadas.
  5. Identifique los flujos de trabajo que acceden a recursos de red privada (por ejemplo, registros de paquetes internos, API privadas, bases de datos o servicios locales), ya que pueden requerir una configuración de red adicional.

2. Asigne los requisitos de procesamiento a los tipos de ejecutores hospedados por GitHub

GitHub ofrece ejecutores administrados en varios sistemas operativos(Linux, Windows y macOS) con opciones para máquinas habilitadas para GPU. Consulta Referencia de ejecutores de mayor capacidad.

  1. Asigne cada especificación de máquina distinta del inventario a una especificación adecuada de un ejecutor hospedado por GitHub.
  2. Tome nota de los ejecutores autohospedados en los que no haya ningún ejecutor hospedado por GitHub adecuado.
  3. Excluya los flujos de trabajo que deben seguir ejecutándose en ejecutores autohospedados de los planes de migración.

3. Estimación de los requisitos de capacidad

Antes de aprovisionar ejecutores hospedados por GitHub, calcule la capacidad de proceso que necesitarán los flujos de trabajo. Revisar el uso actual del ejecutor autohospedado le ayuda a elegir los tamaños de ejecutor adecuados, establecer límites de simultaneidad y predecir posibles cambios en los costos.

  1. En la esquina superior derecha de GitHub, haz clic en la foto del perfil y luego en Your organizations.

  2. Haz clic en el nombre de tu organización.

  3. Debajo del nombre de la organización, haz clic en Insights.

    Captura de pantalla de la barra de navegación horizontal de una organización. Una pestaña, etiquetada con un icono de grafo e "Información", está resaltada en naranja oscuro.

  4. En el menú de navegación "Insights", haga clic en Métricas de uso de acciones.

  5. Haga clic en la pestaña que contiene las métricas que desea ver. Consulta Acerca de las métricas de GitHub Actions.

  6. Revise los siguientes datos para estimar la capacidad del ejecutor hospedado.

    •      **Total de minutos consumidos**: ayuda a estimar la demanda de computación de referencia.
      
    •      **Número de ejecuciones de flujo de trabajo**: identifica los tiempos de actividad máximo que pueden requerir más simultaneidad.
      
    •      **Distribución de trabajos entre tipos de sistema operativo**: garantiza que se aprovisiona la combinación correcta de ejecutores de Linux, Windows y macOS.
      
    •           **Etiquetas de ejecutor (pestaña Trabajos):** filtre por una etiqueta de ejecutor para comprender dónde se usa una etiqueta.
      
  7. Convierta los resultados en un plan de capacidad:

    • Haga coincidir los flujos de trabajo de uso elevado con tamaños de ejecutor más grandes cuando corresponda.
    • Identifique los flujos de trabajo que pueden beneficiarse de imágenes precompiladas o personalizadas para reducir el tiempo de ejecución.
    • Calcule la simultaneidad mediante la determinación del número de trabajos que normalmente se ejecutan simultáneamente.
  8. Tome nota de las lagunas:

    • Los flujos de trabajo con dependencias estrictas que las imágenes del ejecutor hospedado actual no admiten.
    • Trabajos con tiempos de ejecución inusualmente largos o necesidades de entorno a medida. (Es posible que necesite imágenes personalizadas para estas).

El plan de capacidad guiará el número de ejecutores que se van a aprovisionar, qué tipos de máquina usar y cómo configurar grupos y directivas de ejecutores en los pasos siguientes.

4. Configuración de grupos y directivas de ejecutor

Después de calcular las necesidades de capacidad, configure los grupos de ejecutores y las directivas de acceso para que los ejecutores hospedados por GitHub estén disponibles para las organizaciones y flujos de trabajo adecuados.

La configuración de grupos de ejecutores antes de aprovisionar ejecutores ayuda a garantizar que la migración no abra accidentalmente un acceso demasiado amplio o cree aumentos inesperados de costos.

  1. Cree grupos de ejecutores en el nivel empresarial para definir quién puede usar los ejecutores hospedados. Consulta Control del acceso a los ejecutores más grandes.

    Use grupos de ejecutores para definir el ámbito del acceso por organización, repositorio o flujo de trabajo. Si va a migrar desde ejecutores autohospedados, considere la posibilidad de reutilizar los nombres o etiquetas de los grupos de ejecutores existentes siempre que sea posible. Esto permite que los flujos de trabajo sigan funcionando sin cambios al cambiar a los ejecutores alojados de GitHub.

  2. Agregue nuevos ejecutores hospedados por GitHub al grupo adecuado y establezca los límites de simultaneidad en función de los patrones de uso que identificó en el paso 3. Para obtener más información sobre el escalado automático, consulte Administración de ejecutores más grandes.

  3. Revise la configuración de políticas para asegurarse de que los ejecutores solo sean usados por los flujos de trabajo previstos. Por ejemplo, restringir el uso a repositorios específicos o impedir que los flujos de trabajo que no son de confianza accedan a tipos de máquina más eficaces.

Nota:

Los ejecutores más grandes de macOS no se pueden agregar a grupos de ejecutores y se deben hacer referencia directamente a ellos en los archivos de flujo de trabajo.

5. Configurar ejecutores hospedados por GitHub

A continuación, aprovisione sus ejecutores hospedados por GitHub en función de los tipos de máquina y la capacidad que identificó anteriormente.

  1. Elija el tamaño de la máquina y el sistema operativo que coincidan con los requisitos de flujo de trabajo. Para obtener imágenes y especificaciones disponibles, consulte Referencia de ejecutores de mayor capacidad.

  2. Asigne cada ejecutor a un grupo de ejecutores y configure los límites de simultaneidad para controlar el número de trabajos que se pueden ejecutar al mismo tiempo.

  3. Seleccione un tipo de imagen:

    • Utilice las imágenes administradas por GitHub para un entorno mantenido y actualizado con frecuencia.
    • Use imágenes personalizadas cuando necesite dependencias preinstaladas para reducir el tiempo de instalación. Consulta Uso de imágenes personalizadas.
  4. Aplique las personalizaciones necesarias, como variables de entorno, instalación de software o scripts de inicio. Para obtener más ejemplos, consulte Personalizar los ejecutores hospedados en GitHub.

  5. Opcionalmente, configure redes privadas si los ejecutores deben acceder a los recursos internos. Consulta Redes privadas con ejecutores hospedados en GitHub.

Configuración de opciones de conectividad privada

Si los flujos de trabajo necesitan acceso a recursos privados (por ejemplo, registros de paquetes internos, API privadas, bases de datos o servicios locales), elija un enfoque que se adapte a los requisitos de red y seguridad.

Configuración de redes privadas de Azure

Ejecute los ejecutores hospedados en GitHub dentro de una Azure Virtual Network (VNET) para proteger el acceso a los recursos internos.

  1. Cree una Red Virtual de Azure (VNET) y configure las subredes y los grupos de seguridad de red para sus corredores.
  2. Active la red privada de Azure para su grupo de corredores. Consulta Configuración de redes privadas para los ejecutores hospedados en GitHub en su empresa
  3. Aplique la configuración de red, como los grupos de seguridad de red y las reglas de firewall, para controlar el tráfico de entrada y salida.
  4. Actualice el destino del flujo de trabajo para usar el grupo de ejecutores configurado para redes privadas.

Para obtener instrucciones detalladas consulte:

  •         [AUTOTITLE](/organizations/managing-organization-settings/configuring-private-networking-for-github-hosted-runners-in-your-organization)
    
  •         [AUTOTITLE](/admin/configuring-settings/configuring-private-networking-for-hosted-compute-products/configuring-private-networking-for-github-hosted-runners-in-your-enterprise)
    

Conexión mediante una red superpuesta de WireGuard

Si las redes privadas de Azure no son aplicables (por ejemplo, porque la red de destino es local o en otra nube), puede usar una superposición de VPN, como WireGuard, para proporcionar acceso de nivel de red a los recursos privados.

Para obtener instrucciones detalladas y ejemplos, consulte Uso de WireGuard para crear una superposición de red.

Utiliza OIDC con un gateway de API para un acceso seguro a los recursos privados

Si no necesita que el ejecutor se una a la red privada, puede usar OIDC para establecer un acceso de confianza y corta duración a un servicio que exponga a través de una puerta de enlace de API. Este enfoque puede reducir la necesidad de secretos de larga duración y limitar el acceso de red a los puntos de conexión específicos que necesita el flujo de trabajo.

Para obtener instrucciones detalladas y ejemplos, consulte Usar una puerta de enlace de API con OIDC.

6. Actualización de flujos de trabajo para usar los nuevos ejecutores

Después de que los ejecutores hospedados por GitHub estén configurados, actualice los archivos de flujo de trabajo para que se dirijan a ellos.

  1. Reutilice las etiquetas existentes si asignó sus nuevos ejecutores a los mismos nombres de grupo de ejecutores que utilizaron sus ejecutores autohospedados. En este caso, los flujos de trabajo usarán automáticamente los nuevos ejecutores sin cambios.

  2. Si ha creado nuevos grupos o etiquetas de ejecutor, actualice el campo de ejecución en los archivos YAML de flujo de trabajo. Por ejemplo:

    jobs:
      build:
        runs-on: [github-larger-runner, linux-x64]
        steps:
          - name: Checkout code
            uses: actions/checkout@v5
          - name: Build project
            run: make build
    
  3. Compruebe si hay referencias codificadas de forma estricta a etiquetas autohospedadas (como self-hosted, linux-x64 o etiquetas personalizadas) y reemplácelas por las etiquetas de ejecutor hospedado por GitHub adecuadas.

  4. Pruebe cada flujo de trabajo actualizado para asegurarse de que se ejecuta correctamente en los nuevos ejecutores. Supervise los problemas relacionados con las diferencias de entorno o las dependencias que faltan.

7. Quitar ejecutores autohospedados sin usar

Después de actualizar y probar los flujos de trabajo en los ejecutores hospedados en GitHub, quite los ejecutores autohospedados que ya no sean necesarios. Esto evita que los trabajos se dirijan accidentalmente a la infraestructura obsoleta. Consulta Eliminar ejecutores autoalojados.

Antes de quitar los ejecutores autohospedados, recuerde verificar que ha migrado completamente:

  • En las métricas de uso de GitHub Actions, use la pestaña Trabajos y filtre por etiqueta de ejecutor (por ejemplo, self-hosted o sus etiquetas personalizadas) para confirmar que ningún repositorio o trabajo sigue usando ejecutores autohospedados.