Skip to main content

Acerca de los ejecutores autohospedados

Puedes alojar tus propios ejecutores y personalizar el entorno utilizado para ejecutar trabajos en tus flujos de trabajo de GitHub Actions.

Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.

Acerca de los ejecutores autohospedados

Un ejecutor autohospedado es un sistema que se despliega y administra para ejecutar trabajos de GitHub Actions en your GitHub Enterprise Server instance. Para más información sobre GitHub Actions, vea "Descripción de GitHub Actions" y "Acerca de GitHub Actions para empresas".

Con los ejecutores autohospedados, puede crear configuraciones de hardware personalizadas que satisfagan las necesidades con potencia de procesamiento o memoria para ejecutar trabajos más grandes, instalar software disponible en la red local y elegir un sistema operativo. Los ejecutores autohospedados pueden ser físicos, virtuales, en un contenedor, locales o en una nube.

Puedes agregar ejecutores auto-hospedados en varios niveles dentro de la jerarquía de administración:

  • Los ejecutores a nivel de repositorio están dedicados a un solo repositorio.
  • Los ejecutores a nivel de organización pueden procesar jobs para varios repositorios dentro de una organización.
  • Los ejecutores a nivel de empresa puede asignarse a varias organizaciones en una cuenta empresarial.

La máquina de tu ejecutor se conecta aGitHub Enterprise Server utilizando la aplicación para ejecutores auto-hospedados de GitHub Actions. La aplicación ejecutora de GitHub Actions es de código abierto. Puede contribuir y presentar incidencias en el repositorio runner. Cuando se lanza una versión nueva, la aplicación ejecutora se actualiza automáticamente cuando un job se asigna al ejecutor o dentrod e una semana de lanzamiento si no se le ha asignado ningún job a dicho ejecutor.

Nota: Si usas ejecutores efímeros y has deshabilitado las actualizaciones automáticas, antes de actualizar your GitHub Enterprise Server instance debes actualizar los ejecutores autohospedados a la versión de la aplicación del ejecutor que se ejecutará en la instancia actualizada. La actualización de your GitHub Enterprise Server instance antes de actualizar los ejecutores efímeros puede hacer que los ejecutores se desconecten. Para más información, consulta «Actualización de GitHub Enterprise Server».

Un ejecutor auto-hospedado se eliminará automáticamente de GitHub Enterprise Server si no se ha conectado a GitHub Actions por más de 30 días.

Para más información sobre cómo instalar y usar ejecutores autohospedados, vea "Adición de ejecutores autohospedados" y "Uso de ejecutores autohospedados en un flujo de trabajo".

Diferencias entre los ejecutores hospedados en GitHub y ejecutores autohospedados

Los ejecutores hospedados en GitHub ofrecen una forma más simple y rápida de ejecutar los flujos de trabajo, mientras que los ejecutores autohospedados son una forma altamente configurable para ejecutar flujos de trabajo en un entorno personalizado propio.

Ejecutores hospedados en GitHub:

  • Reciben actualizaciones automáticas para el sistema operativo, paquetes y herramientas preinstalados y la aplicación del ejecutor autohospedado.
  • Son administrados y mantenidos por GitHub.
  • Proporcionan una instancia limpia para cada ejecución de trabajo.
  • Usan minutos libres en tu plan de GitHub, con tarifas por minuto aplicadas después de superar los minutos libres.

Ejecutores autohospedados:

  • Reciben solo actualizaciones automáticas para la aplicación de ejecutor autohospedado, aunque se pueden deshabilitar las actualizaciones automáticas del ejecutor. Para más información sobre cómo controlar las actualizaciones de software de ejecutor en ejecutores autohospedados, vea "Escalado automático con ejecutores autohospedados". Es responsable de actualizar el sistema operativo y el resto del software.
  • Pueden usar servicios en la nube o máquinas locales por las que ya paga.
  • Son personalizables según sus requisitos de hardware, sistema operativo, software y seguridad.
  • No necesitan una instancia limpia para cada ejecución de trabajo.
  • Se pueden utilizar gratis con GitHub Actions, pero eres responsable del costo de mantener tus máquinas ejecutoras.
  • Se pueden organizar en grupos para restringir el acceso a los flujos de trabajo, organizaciones y repositorios específicos. Para más información, vea "Administración del acceso a ejecutores autohospedados mediante grupos".

Requisitos para máquinas de ejecutores autoalojados

Puedes usar cualquier máquina como ejecutor autoalojado, siempre que cumpla con estos requisitos:

Autoescalar tus ejecutores auto-hospedados

Puedes aumentar o disminuir la cantidad de ejecutores auto-hospedados automáticamente en tu ambiente como respuesta a los eventos de webhook que recibes. Para más información, vea "Escalado automático con ejecutores autohospedados".

Límites de uso

Hay algunos límites para el uso de las GitHub Actions cuando se utilizan ejecutores auto-hospedados. Estos límites están sujetos a cambios.

  • Tiempo de ejecución del flujo de trabajo: cada flujo de trabajo está limitado a 35 días. Si un flujo de trabajo llega a este límite, se cancelará. Este periodo incluye la duración de la ejecución y el tiempo invertido en la espera y la aprobación.
  • Tiempo de cola de trabajos: cada trabajo para ejecutores autohospedados se puede poner en cola durante un máximo de 24 horas. Si un ejecutor auto-hospedado no comienza a ejecutar el job dentro de este límite de tiempo, dicho job se terminará y no se podrá completar.
  • Solicitudes de API: puedes ejecutar hasta 1000 solicitudes en la API de GitHub en una hora en todas las acciones de un repositorio. Si se supera este número, las llamadas API adicionales fallarán, lo cual puede ocasionar que los trabajos fallen también.
  • Matriz de trabajos: Una matriz de jobs puede generar un máximo de 256 jobs por ejecución de flujo de trabajo. Este límite se aplica tanto a los ejecutores autohospedados como a los hospedados por GitHub Enterprise Server. - Cola de ejecución de flujos de trabajo: no se pueden poner en cola más de 500 ejecuciones de flujo de trabajo en un intervalo de 10 segundos por repositorio. Si una ejecución de flujo de trabajo lelga a su límite, la ejecución de flujo de trabajo se termina y falla en completarse.

Continuidad de los flujos de trabajo para los ejecutores auto-hospedados

Si los servicios de las GitHub Actions se encuentran temporalmente no disponibles, entonces se descartará una ejecución de flujo de trabajo si no se puso en cola en los primeros 30 minutos después de activarse. Por ejemplo, si un flujo de trabajo se activa y los servicios de las GitHub Actions no están disponibles por 31 minutos o más, entonces la ejecución de flujo de trabajo no se procesará.

Sistemas operativos y arquitecturas compatibles para los ejecutores auto-hospedados

Los siguientes sistemas operativos son compatibles con la aplicación del ejecutor autoalojado.

Linux

  • Red Hat Enterprise Linux 7 o superior
  • CentOS 7 o superior
  • Oracle Linux 7
  • Fedora 29 o posterior
  • Debian 9 o posterior
  • Ubuntu 16.04 o posterior
  • Linux Mint 18 o posterior
  • openSUSE 15 o posterior
  • SUSE Enterprise Linux (SLES) 12 SP2 o posterior

Windows

  • Windows 7 64-bit
  • Windows 8.1 de 64 bits
  • Windows 10 de 64 bits
  • Windows Server 2012 R2 64-bit
  • Windows Server 2019 64-bit

macOS

  • macOS 10.13 (High Sierra) o posterior

Arquitecturas

Las siguientes arquitecturas de procesamiento son compatibles para la aplicación del ejecutor auto-hospedado.

  • x64: Linux, macOS, Windows.
  • ARM64: Linux.
  • ARM32: Linux.

La comunicación entre ejecutores autoalojados

Es posible que se necesite configuración adicional para usar acciones de GitHub.com con GitHub Enterprise Server, o bien para usar las acciones actions/setup-LANGUAGE con ejecutores autohospedados sin acceso a Internet. Para más información, vea "Administración del acceso a acciones desde GitHub.com" y póngase en contacto con el administrador del sitio de GitHub Enterprise.

La comunicación entre ejecutores autoalojados y GitHub Enterprise Server

El ejecutor auto-hospedado se conecta a GitHub Enterprise Server para recibir asignaciones de jobs y para descargar versiones nuevas de la aplicación ejecutora. El ejecutor autohospedado usa un sondeo largo de HTTP(S) que abre una conexión a GitHub Enterprise Server durante 50 segundos y, si no se recibe una respuesta, agota el tiempo de espera y crea un sondeo largo. La aplicación debe estar ejecutándose en la máquina para aceptar y ejecutar trabajos de GitHub Actions.

La conexión entre los ejecutores autohospedados y GitHub Enterprise Server se realiza mediante HTTP (puerto 80) o HTTPS (puerto 443). Para garantizar la conectividad por HTTPS, configura TLS para your GitHub Enterprise Server instance. Para más información, vea "Configuración de TLS".

Solo se necesita una conexión de salida desde el ejecutor a your GitHub Enterprise Server instance. No se necesita una conexión entrante desde your GitHub Enterprise Server instance hacia el ejecutor. Para que el almacenamiento en caché funcione, el ejecutor debe poder comunicarse con el almacenamiento de blobs y descargar contenido directamente de él.

GitHub Enterprise Server debe aceptar conexiones entrantes desde tus ejecutores a través de HTTP(S) en el nombre de host de your GitHub Enterprise Server instance y subdominio de la API, y tus ejecutores deben permitir conexiones salientes a través de HTTP(S) hacia el nombre de host de your GitHub Enterprise Server instance y el subdominio de la API.

Los ejecutores auto-hospedados no necesitan acceso externo a internet para funcionar. Como resultado, puedes usar el enrutamiento de red para dirigir la comunicación entre el ejecutor autohospedado y your GitHub Enterprise Server instance. Por ejemplo, puedes asignar una dirección IP privada a tu ejecutor autohospedado y configurar el enrutamiento para enviar el tráfico a your GitHub Enterprise Server instance sin necesidad de que este tráfico atraviese una red pública.

También puedes usar ejecutores autoalojados con un servidor proxy. Para más información, vea "Uso de un servidor proxy con ejecutores autohospedados".

Para más información sobre cómo solucionar problemas comunes de conectividad de red, vea "Supervisión y solución de problemas de ejecutores autohospedados".

Comunicación entre ejecutores autohospedados y GitHub.com

Los ejecutores autohospedados no necesitan conectarse a GitHub.com, a menos que hayas habilitado el acceso automático a las acciones de GitHub.com para your GitHub Enterprise Server instance. Para más información, vea "Acerca del uso de acciones en la empresa".

Si habilitaste el acceso automático a las acciones de GitHub.com, entonces el ejecutor auto-hospedado se conectará directamente a GitHub.com para descargar las acciones. Debes asegurarte de que la máquina tiene el acceso a la red adecuado para comunicarte con las URL de GitHub listadas a continuación.

github.com
api.github.com
codeload.github.com

Nota: Algunos de los dominios que se enumeran antes se configuran mediante registros CNAME. Es posible que algunos firewalls necesiten agregar reglas de forma recursiva para todos los registros CNAME. Tenga en cuenta que es posible que los registros CNAME cambien en el futuro y que solo los dominios enumerados anteriormente permanezcan constantes.

Seguridad de los ejecutores auto-hospedados

Los flujos de trabajo que no son de confianza y se ejecutan en tu ejecutor autoalojado plantean riesgos de seguridad considerables para tu máquina y entorno de red, en especial si tu máquina se mantiene en su entorno entre trabajos. Algunos de los riesgos incluyen:

  • Programas maliciosos que se ejecutan en la máquina.
  • Escapar del entorno Sandbox del ejecutor de la máquina.
  • Exponer el acceso al entorno de red de la máquina.
  • Mantener datos peligrosos o no deseados en la máquina.

Para más información sobre la protección de seguridad para los ejecutores autohospedados, vea "Fortalecimiento de la seguridad para GitHub Actions".

Información adicional