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.

Acerca de los ejecutores autohospedados

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

Los ejecutores autohospedados ofrecen más control sobre el hardware, el sistema operativo y las herramientas de software que el que ofrecen los ejecutores hospedados en GitHub. 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 que no ofrecen los ejecutores hospedados en GitHub. 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 Cloud 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.

Un ejecutor auto-hospedado se eliminará automáticamente de GitHub Enterprise Cloud si no se ha conectado a GitHub Actions por más de 14 días.
Un ejecutor efímero auto-hospedado se eliminará automáticamente de GitHub Enterprise Cloud si no se ha conectado a GitHub Actions por más de 1 día.

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 Cloud. - 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, macOS, Windows (actualmente en versión beta).
  • ARM32: Linux.

La comunicación entre ejecutores autoalojados y GitHub Enterprise Cloud

El ejecutor auto-hospedado se conecta a GitHub Enterprise Cloud para recibir asignaciones de jobs y para descargar versiones nuevas de la aplicación ejecutora. El ejecutor autohospedado usa un sondeo largo de HTTPS que abre una conexión a GitHub Enterprise Cloud 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.

Como el ejecutor autohospedado abre una conexión a GitHub.com, no es necesario permitir que GitHub realice conexiones de entrada al ejecutor autohospedado.

Debes asegurarte de que la máquina tenga el acceso adecuada a la red para comunicarse con los hosts de GitHub que se listan a continuación. Algunos hosts son necesarios para que se lleven a cabo las operaciones de los ejecutores esenciales, mientras que otros solo son necesarios para algunas funcionalidades específicas.

Nota: Algunos de los dominios que se enumeran a continuación 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 a continuación permanezcan constantes.

Necesarios para operaciones esenciales:

github.com
api.github.com

Necesarios para acciones de descarga:

codeload.github.com

Necesarios para las actualizaciones de versión del ejecutor:

objects.githubusercontent.com
objects-origin.githubusercontent.com
github-releases.githubusercontent.com
github-registry-files.githubusercontent.com

Necesarios para cargar o descargar cachés y artefactos de flujo de trabajo:

*.blob.core.windows.net

Necesarios para recuperar tokens de OIDC:

*.actions.githubusercontent.com

Necesario para descargar o publicar paquetes o contenedores en GitHub Packages:

*.pkg.github.com
ghcr.io

Adicionalmente, tu flujo de trabajo podría requerir acceso a otros recursos de red.

Si usas una lista de permisos de dirección IP para tu organización o cuenta de empresa de GitHub, debes agregar la dirección IP de tu ejecutor autoalojado a la lista de permisos. Para más información, vea "Administración de direcciones IP permitidas para la organización" o "Aplicación de directivas para la configuración de seguridad en la empresa".

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".

Seguridad de los ejecutores auto-hospedados

Te recomendamos que solo utilices los ejecutores auto-hospedados con los repositorios privados. Esto se debe a que las bifurcaciones de tu repositorio público podrían ejecutar un código peligroso en tu máquina de ejecutor auto-hospedado al crear una solicitud de cambios que excluya el código en un flujo de trabajo.

Este no es un problema con los ejecutores hospedados en GitHub, ya que cada uno de los ejecutores hospedados en GitHub siempre constituye una máquina virtual limpia y aislada, la cual se destruya al final de la ejecución del job.

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