About self-hosted runners

You can host your own runners and customize the environment used to run jobs in your GitHub Actions workflows.

About self-hosted runners

Los ejecutores auto-hospedados ofrecen más control sobre las herramientas del hardware, sistema operativo y software que lo que ofrecen los ejecutores hospedados en GitHub. Con los ejecutores auto-hospedados, puedes elegir crear una configuración de hardware personalizada con más poder de procesamiento o más memoria para ejecutar jobs más grandes, instalar software disponible en tu red local, y escoger un sistema operativo que no se ofrezca en los ejecutores hospedados en GitHub. Self-hosted runners can be physical, virtual, in a container, on-premises, or in a cloud.

You can add self-hosted runners at various levels in the management hierarchy:

  • Repository-level runners are dedicated to a single repository.
  • Organization-level runners can process jobs for multiple repositories in an organization.
  • Enterprise-level runners can be assigned to multiple organizations in an enterprise account.

Your runner machine connects to GitHub using the GitHub Actions self-hosted runner application. La aplicación ejecutora de GitHub Actions es de código abierto. Puedes contribuir y emitir informes de problemas en el repositorio runner. When a new version is released, the runner application automatically updates itself when a job is assigned to the runner, or within a week of release if the runner hasn't been assigned any jobs.

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

For more information about installing and using self-hosted runners, see "Adding self-hosted runners" and "Using self-hosted runners in a workflow."

Differences between GitHub-hosted and self-hosted runners

GitHub-hosted runners offer a quicker, simpler way to run your workflows, while self-hosted runners are a highly configurable way to run workflows in your own custom environment.

GitHub-hosted runners:

  • Receive automatic updates for the operating system, preinstalled packages and tools, and the self-hosted runner application.
  • Are managed and maintained by GitHub.
  • Provide a clean instance for every job execution.
  • Use free minutes on your GitHub plan, with per-minute rates applied after surpassing the free minutes.

Self-hosted runners:

  • Receive automatic updates for the self-hosted runner application only. You are responsible for updating the operating system and all other software.
  • Can use cloud services or local machines that you already pay for.
  • Are customizable to your hardware, operating system, software, and security requirements.
  • Don't need to have a clean instance for every job execution.
  • Are free to use with GitHub Actions, but you are responsible for the cost of maintaining your runner machines.

Requirements for self-hosted runner machines

You can use any machine as a self-hosted runner as long at it meets these requirements:

  • You can install and run the self-hosted runner application on the machine. For more information, see "Supported architectures and operating systems for self-hosted runners."
  • The machine can communicate with GitHub Actions. For more information, see "Communication between self-hosted runners and GitHub."
  • The machine has enough hardware resources for the type of workflows you plan to run. The self-hosted runner application itself only requires minimal resources.
  • If you want to run workflows that use Docker container actions or service containers, you must use a Linux machine and Docker must be installed.

Autoscaling your self-hosted runners

You can automatically increase or decrease the number of self-hosted runners in your environment in response to the webhook events you receive. For more information, see "Autoscaling with self-hosted runners."

Usage limits

There are some limits on GitHub Actions usage when using self-hosted runners. These limits are subject to change.

  • Tiempo de ejecución del flujo de trabajo - Cada flujo de trabajo se limita a 72 horas. Si un flujo de trabajo llega a este límite, se cancelará.
  • Job queue time - Each job for self-hosted runners can be queued for a maximum of 24 hours. If a self-hosted runner does not start executing the job within this limit, the job is terminated and fails to complete.
  • Solicitudes de la API - Puedes ejecutar hasta 1000 solicitudes de API en una hora en todas las acciones dentro de un repositorio. Si esto se excede, los llamados adicionales a la API fallarán, lo cual puede ocasionar que los jobs fallen también.
  • Job matrix - Una matriz de jobs puede generar un máximo de 256 jobs por ejecución de flujo de trabajo. Este límite también aplica para los ejecutores auto-hospedados.
  • Lista de ejecución de flujos de trabajo - No se pueden poner en cola más de 500 ejecuciones de flujo de trabajo por 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.

Workflow continuity for self-hosted runners

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

Supported architectures and operating systems for self-hosted runners

The following operating systems are supported for the self-hosted runner application.

Linux

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

Windows

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

macOS

  • macOS 10.13 (High Sierra) or later

Architectures

The following processor architectures are supported for the self-hosted runner application.

  • x64 - Linux, macOS, Windows.
  • ARM64 - Linux only.
  • ARM32 - Linux only.

Communication between self-hosted runners and GitHub

The self-hosted runner polls GitHub to retrieve application updates and to check if any jobs are queued for processing. The self-hosted runner uses a HTTPS long poll that opens a connection to GitHub for 50 seconds, and if no response is received, it then times out and creates a new long poll. The application must be running on the machine to accept and run GitHub Actions jobs.

Since the self-hosted runner opens a connection to GitHub, you do not need to allow GitHub to make inbound connections to your self-hosted runner.

You must ensure that the machine has the appropriate network access to communicate with the GitHub hosts listed below. Some hosts are required for essential runner operations, while other hosts are only required for certain functionality.

Note: Some of the domains listed below are configured using CNAME records. Some firewalls might require you to add rules recursively for all CNAME records. Note that the CNAME records might change in the future, and that only the domains listed below will remain constant.

Needed for essential operations:

github.com
api.github.com

Needed for downloading actions:

codeload.github.com

Needed for runner version updates:

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

Needed for uploading/downloading caches and workflow artifacts:

*.blob.core.windows.net

Needed for retrieving OIDC tokens:

*.actions.githubusercontent.com

In addition, your workflow may require access to other network resources. For example, if your workflow installs packages or publishes containers to GitHub Packages, then the runner will also require access to those network endpoints.

If you use an IP address allow list for your GitHub organization or enterprise account, you must add your self-hosted runner's IP address to the allow list. For more information, see "Managing allowed IP addresses for your organization" or "Enforcing policies for security settings in your enterprise".

You can also use self-hosted runners with a proxy server. For more information, see "Using a proxy server with self-hosted runners."

Self-hosted runner security with public repositories

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

This is not an issue with GitHub-hosted runners because each GitHub-hosted runner is always a clean isolated virtual machine, and it is destroyed at the end of the job execution.

Untrusted workflows running on your self-hosted runner pose significant security risks for your machine and network environment, especially if your machine persists its environment between jobs. Some of the risks include:

  • Malicious programs running on the machine.
  • Escaping the machine's runner sandbox.
  • Exposing access to the machine's network environment.
  • Persisting unwanted or dangerous data on the machine.

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.