Skip to main content

Acerca de los ejecutores hospedados en GitHub

GitHub ofrece máquinas virtuales hospedadas para ejecutar flujos de trabajo. La máquina virtual contiene un entorno de herramientas, paquetes y configuraciones disponibles para que GitHub Actions los utilice.

Información general de ejecutores hospedados en GitHub

Los ejecutores son las máquinas que ejecutan trabajos en un flujo de trabajo de GitHub Actions. Por ejemplo, un ejecutor puede clonar el repositorio localmente, instalar software de prueba y, a continuación, ejecutar comandos que evalúen el código.

GitHub proporciona ejecutores que puedes usar para ejecutar los trabajos o puedes hospedar tus propios ejecutores. Cada ejecutor hospedado en GitHub es una nueva máquina virtual (VM) hospedada por GitHub con la aplicación del ejecutor y otras herramientas preinstaladas, y está disponible con sistemas operativos Ubuntu Linux, Windows o macOS. Cuando usas un ejecutor alojado en GitHub, se contemplan el mantenimiento de la máquina y las actualizaciones.

Puedes elegir una de las opciones del ejecutor estándar hospedado en GitHub o bien, si estás en el plan GitHub Team o GitHub Enterprise Cloud, puedes aprovisionar un ejecutor con más núcleos o un ejecutor con tecnología de procesador GPU o ARM. A estas máquinas se les conoce como "ejecutor más grande". Para obtener más información, vea «Acerca de los ejecutores más grandes».

El uso de ejecutores hospedados por GitHub requiere acceso a la red con al menos 70 kilobits por segundo de carga y velocidades de descarga.

Note

Los minutos de derecho para los ejecutores alojados en GitHub no están disponibles para cuentas de usuario administradas. Enterprise Managed Users que deseen contribuir a repositorios de organizaciones de las que no son miembros pueden hacer una bifurcación del repositorio de la organización y, a continuación, abrir una solicitud de incorporación de cambios dirigida al repositorio de la organización. Esto ejecuta los flujos de trabajo en los ejecutores alojados en la organización GitHub. Para obtener más información, consulta "Acerca de Enterprise Managed Users".

Usar un ejecutor hospedado en GitHub

Para usar un ejecutor hospedado en GitHub, crea un trabajo y usa runs-on para especificar el tipo de ejecutor que procesará el trabajo, como ubuntu-latest, windows-latesto macos-latest. Para obtener la lista completa de tipos de ejecutor, consulta "Acerca de los ejecutores hospedados en GitHub". Si tienes repo: write acceso a un repositorio, puedes ver una lista de los ejecutores disponibles para usarlos en los flujos de trabajo del repositorio. Para obtener más información, consulta "Visualización de los ejecutores disponibles para un repositorio".

Cuando comienza el trabajo, GitHub aprovisiona automáticamente una nueva máquina virtual para ese trabajo. Todos los pasos del trabajo se ejecutan en la máquina virtual, lo que permite que los pasos de ese trabajo compartan información mediante el sistema de archivos del ejecutor. Puedes ejecutar flujos de trabajo directamente en la máquina virtual o en un contenedor de Docker. Una vez finalizado el trabajo, la máquina virtual se retira automáticamente.

En el diagrama siguiente se muestra cómo se ejecutan dos trabajos de un flujo de trabajo en dos ejecutores hospedados en GitHub diferentes.

Diagrama de un flujo de trabajo que consta de dos trabajos. Un trabajo se ejecuta en Ubuntu y el otro se ejecuta en Windows.

El siguiente flujo de trabajo de ejemplo tiene dos trabajos, denominados Run-npm-on-Ubuntu y Run-PSScriptAnalyzer-on-Windows. Cuando se desencadena este flujo de trabajo, GitHub aprovisiona una nueva máquina virtual para cada trabajo.

  • El trabajo denominado Run-npm-on-Ubuntu se ejecuta en una máquina virtual Linux, ya que el elemento runs-on: del trabajo especifica ubuntu-latest.
  • El trabajo denominado Run-PSScriptAnalyzer-on-Windows se ejecuta en una máquina virtual Windows, ya que el elemento runs-on: del trabajo especifica windows-latest.
YAML
name: Run commands on different operating systems
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  Run-npm-on-Ubuntu:
    name: Run npm on Ubuntu
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm help

  Run-PSScriptAnalyzer-on-Windows:
    name: Run PSScriptAnalyzer on Windows
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install PSScriptAnalyzer module
        shell: pwsh
        run: |
          Set-PSRepository PSGallery -InstallationPolicy Trusted
          Install-Module PSScriptAnalyzer -ErrorAction Stop
      - name: Get list of rules
        shell: pwsh
        run: |
          Get-ScriptAnalyzerRule

Mientras se ejecuta el trabajo, los registros y la salida se pueden ver en la interfaz de usuario de GitHub:

Captura de pantalla de una ejecución de flujo de trabajo. Se muestran los pasos para el trabajo "Ejecutar PSScriptAnalyzer en Windows".

La aplicación ejecutora de GitHub Actions es de código abierto. Puede contribuir y presentar incidencias en el repositorio runner.

Visualización de ejecutores disponibles para un repositorio

Si tienes acceso repo: write a un repositorio, puedes ver una lista de los ejecutores disponibles para el repositorio.

  1. En GitHub.com, navega a la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Acciones.

    Captura de pantalla de las pestañas del repositorio "github/docs". La pestaña "Proyectos" aparece resaltada con un contorno naranja.

  3. En la barra lateral izquierda, en la sección "Administración", haz clic en Ejecutores.

  4. Revisa la lista de ejecutores hospedados en GitHub disponibles para el repositorio.

  5. Opcionalmente, para copiar la etiqueta de un ejecutor para usarla en un flujo de trabajo, haz clic en a la derecha del ejecutor y, a continuación, haz clic en Copiar etiqueta.

Nota: Los propietarios de la empresa y de la organización y los usuarios con el permiso "Administrar ejecutores de la organización y grupos de ejecutores" pueden crear ejecutores desde esta página. Para crear un nuevo ejecutor, haz clic en Nuevo ejecutor en la parte superior derecha de la lista de ejecutores para agregar ejecutores al repositorio.

Para más información, consulta "Administración de ejecutores más grandes" y "Agrega ejecutores auto-hospedados."

Para obtener más información sobre los roles de la organización personalizados, consulta: "Acerca de los roles personalizados de organización".

Ejecutores y recursos de hardware compatibles

Los ejecutores hospedados en GitHub están disponibles para su uso en repositorios públicos y privados.

Los ejecutores de Linux alojados en GitHub son compatibles con la aceleración por hardware para herramientas Android SDK, lo que hace que la ejecución de pruebas Android sea mucho más rápida y consuma menos minutos. Para más información sobre la aceleración de hardware de Android, consulta Configuración de la aceleración de hardware para Android Emulator en la documentación de desarrolladores de Android.

Note

Las imágenes de ejecutores -latest son las últimas imágenes estables que proporciona GitHub y puede que no sean las versiones más recientes de los sistemas operativos disponibles desde los proveedores de estos.

Advertencia: Las imágenes beta y en desuso se proporcionan "tal cual", "con todos sus fallos" y "conforme estén disponibles" y están excluidas del acuerdo de nivel de servicio y de la garantía. El soporte al cliente podría no cubrir las imágenes beta.

Ejecutores hospedados en GitHub estándar para repositorios públicos

En el caso de los repositorios públicos, los trabajos que usan las etiquetas de flujo de trabajo que se muestran en la tabla siguiente se ejecutarán en máquinas virtuales con las especificaciones asociadas. El uso de estos ejecutores en repositorios públicos es gratuito e ilimitado.

Máquina virtual Procesador (CPU) Memoria (RAM) Almacenamiento (SSD) Etiqueta de flujo de trabajo Notas
Linux 4 16 GB 14 GB ubuntu-latest, ubuntu-24.04 [Beta], ubuntu-22.04, ubuntu-20.04 La etiqueta ubuntu-latest usa actualmente la imagen del ejecutor de Ubuntu 22.04.
Windows 4 16 GB 14 GB windows-latest, , windows-2022, windows-2019 La etiqueta windows-latest usa actualmente la imagen del ejecutor de Windows Server 2022.
macOS 3 14 GB 14 GB macos-12 o macos-11 La etiqueta macos-11 está en desuso y ya no estará disponible después del 28 de junio de 2024.
macOS 4 14 GB 14 GB macos-13 N/D
macOS 3 (M1) 7 GB 14 GB macos-latest o macos-14 La etiqueta macos-latest usa actualmente la imagen del ejecutor de macOS 14.

Ejecutores hospedados en GitHub estándar para repositorios privados

En el caso de los repositorios privados, los trabajos que usan las etiquetas de flujo de trabajo que se muestran en la tabla siguiente se ejecutarán en máquinas virtuales con las especificaciones asociadas. Estos ejecutores usan la asignación de minutos gratuitos de la cuenta GitHub y, a continuación, se cobran según las tarifas por minuto. Para obtener más información, vea «Acerca de la facturación para las Acciones de GitHub».

Máquina virtual Procesador (CPU) Memoria (RAM) Almacenamiento (SSD) Etiqueta de flujo de trabajo Notas
Linux 2 7 GB 14 GB ubuntu-latest, ubuntu-24.04 [Beta], ubuntu-22.04, ubuntu-20.04 La etiqueta ubuntu-latest usa actualmente la imagen del ejecutor de Ubuntu 22.04.
Windows 2 7 GB 14 GB windows-latest, , windows-2022, windows-2019 La etiqueta windows-latest usa actualmente la imagen del ejecutor de Windows Server 2022.
macOS 3 14 GB 14 GB macos-12 o macos-11 La etiqueta macos-11 está en desuso y ya no estará disponible después del 28 de junio de 2024.
macOS 4 14 GB 14 GB macos-13 N/D
macOS 3 (M1) 7 GB 14 GB macos-latest o macos-14 La etiqueta macos-latest usa actualmente la imagen del ejecutor de macOS 14.

Las bitácoras de flujos de trabajo listan los ejecutores que se usan para ejecutar un job. Para obtener más información, vea «Visualizar el historial de ejecución del flujo de trabajo».

Limitaciones de los ejecutores de macOS arm64

  • Todas las acciones proporcionadas por GitHub son compatibles con los ejecutores hospedados en arm64 GitHub. Sin embargo, las acciones de la comunidad pueden no ser compatibles con arm64 y deben instalarse manualmente en runtime.
  • No se admiten la virtualización anidada ni Metal Performance Shaders (MPS) debido a la limitación del marco de virtualización de Apple.
  • Las funcionalidades de red, como las redes privadas de Azure y la asignación de direcciones IP estáticas, no están disponibles actualmente para los ejecutores de mayor capacidad de macOS.
  • Los ejecutores de macOS arm64 no tienen asignado un UUID/UDID estático porque Apple no admite esta característica. Sin embargo, a los ejecutores de MacOS de Intel se les asigna un UDID estático, específicamente 4203018E-580F-C1B5-9525-B745CECA79EB. Si va a compilar e iniciar sesión en el mismo host en el que planea probar la compilación, puede iniciar sesión con un perfil de aprovisionamiento de desarrollo. Si necesita un UDID estático, puede usar ejecutores de Intel y agregar su UDID a su cuenta de desarrollador de Apple.

Ejecutor más grandes

Los clientes de los planes GitHub Team y GitHub Enterprise Cloud pueden elegir entre una variedad de máquinas virtuales administradas que tienen más recursos que los ejecutores estándar hospedados en GitHub. A estas máquinas se les conoce como "ejecutor más grande". Ofrecen las siguientes características avanzadas:

  • Más RAM, CPU y espacio en disco
  • Direcciones IP estáticas
  • Redes privadas de Azure
  • La capacidad de agrupar ejecutores
  • Escalado automático para admitir flujos de trabajo simultáneos
  • Ejecutores con tecnología de GPU y de ARM

Estos ejecutores más grandes están hospedados por GitHub y tienen preinstalada la aplicación de ejecutor y otras herramientas.

Para obtener más información, vea «Acerca de los ejecutores más grandes».

Software compatible

Las herramientas de software que se incluyen en los ejecutores hospedados en GitHub se actualizan semanalmente. El proceso de actualización toma varios días y la lista de software preinstalado en la rama main se actualiza después de que termine toda la implementación.

Software preinstalado

Las bitácoras de flujo de trabajo incluyen un enlace a las herramientas preinstaladas en el ejecutor exacto. Para encontrar esta información en el registro del flujo de trabajo, expanda la sección Set up job. En esa sección, expanda la sección Runner Image. El enlace que sigue a Included Software describirá las herramientas preinstaladas en el ejecutor que ha ejecutado el flujo de trabajo.

Para obtener más información, vea «Visualizar el historial de ejecución del flujo de trabajo». Para obtener la lista general de herramientas incluidas en cada sistema operativo del ejecutor, consulta la documentación de Imágenes disponibles del repositorio de imágenes del ejecutor.

Los ejecutores alojados en GitHub incluyen las herramientas integradas predeterminadas del sistema operativo, además de los paquetes enumerados en las referencias anteriores. Por ejemplo, los ejecutores de Ubuntu y macOS incluyen grep, find y which, entre otras herramientas predeterminadas.

También puedes ver una lista de materiales de software (SBOM) para cada compilación de las imágenes del ejecutor de Windows y Ubuntu. Para obtener más información, vea «Fortalecimiento de seguridad para GitHub Actions».

Utilizar el software preinstalado

Te recomendamos utilizar acciones para interactuar con el software instalado en los ejecutores. Este enfoque tiene varias ventajas:

  • Habitualmente, las acciones proporcionan una funcionalidad más flexible, como la selección de la versión, la capacidad de pasar argumentos y los parámetros.
  • Garantiza que las versiones de herramienta que se utilizan en tu flujo de trabajo permanecerán iguales sin importar las actualizaciones de software

Si deseas solicitar alguna herramienta, abre una incidencia en actions/runner-images. Este repositorio también contiene anuncios sobre todas las actualizaciones de software principales en los ejecutores.

Instalar software adicional

Puedes instalar software adicional en los ejecutores hospedados en GitHub. Para más información, consulta "Personalizar los ejecutores hospedados en GitHub".

Hosts en la nube usados por ejecutores hospedados en GitHub

GitHub hospeda ejecutores de Linux y Windows en máquinas virtuales en Microsoft Azure con la aplicación del ejecutor de GitHub Actions instalada. La aplicación del ejecutor alojada en GitHub es una bifurcación del agente de Azure Pipelines. Los paquetes ICMP entrantes están bloqueados para todas las máquinas virtuales de Azure, por lo tanto, es posible que los comandos ping o traceroute no funcionen. GitHub hospeda ejecutores de macOS en centros de datos de Azure.

Para los ejecutores de Linux y Windows, GitHub usa máquinas virtuales Dadsv5-series. Para obtener más información, consulta Series Dasv5 y Dadsv5 en la documentación de Microsoft Azure.

Continuidad del flujo de trabajo

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

Adicionalmente, si la ejecución de flujo de trabajo se puso en cola con éxito, pero no la ha procesado un ejecutor hospedado en GitHub en los 45 minutos subsecuentes, entonces la ejecución de flujo de trabajo en cola se descartará.

Privilegios administrativos

Las máquinas virtuales Linux y macOS se ejecutan sin la contraseña sudo. Cuando necesite ejecutar comandos o instalar herramientas que requieran más privilegios que el usuario actual, puede usar sudo sin tener que introducir una contraseña. Para obtener más información, vea el "Manual de Sudo".

Las máquinas virtuales de Windows están configuradas para ejecutarse como administradores con el control de cuentas de usuario (UAC) inhabilitado. Para obtener más información, vea "Funcionamiento del control de cuentas de usuario" en la documentación de Windows.

Direcciones IP

Para ver una lista de rangos de direcciones IP que utiliza GitHub Actions para los ejecutores hospedados en GitHub, puedes utilizar la API de REST de GitHub. Para obtener más información, consulta la clave actions en la respuesta del punto de conexión GET /meta. Para obtener más información, vea «Puntos de conexión de la API de REST para metadatos».

Los ejecutores de Windows y de Ubuntu se hospedan en Azure y, subsecuentemente, tienen los mismos rangos de direcciones IP que los centros de datos de Azure. Los ejecutores de macOS se hospedan en la nube de macOS propia de GitHub.

Ya que hay muchos rangos de direcciones IP para los ejecutores hospedados en GitHub, no te recomendamos que los utilices como listas de direcciones permitidas para tus recursos internos. En su lugar, se recomienda usar ejecutor más grande con un intervalo de direcciones IP estáticas o ejecutores de prueba interna. Para más información, consulta "Acerca de los ejecutores más grandes" o "Acerca de los ejecutores autohospedados".

La lista de direcciones IP permitidas de GitHub Actions que devuelve la API se actualiza una vez por semana.

Requisitos de comunicación para ejecutores hospedados en GitHub y GitHub Enterprise Cloud

Un ejecutor hospedado en GitHub debe establecer conexiones con los puntos de conexión propiedad de GitHub para realizar operaciones de comunicación fundamentales. Además, el ejecutor puede requerir acceso a redes adicionales que especifiques o utilices en una acción.

A fin de garantizar comunicaciones adecuadas para ejecutores hospedados en GitHub entre redes dentro de la configuración, asegúrate de que se permiten las siguientes comunicaciones.

Note

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 permanezcan constantes.

Necesarios para operaciones esenciales:

Shell
github.com
api.github.com
*.actions.githubusercontent.com

Necesarios para acciones de descarga:

Shell
codeload.github.com
ghcr.io
*.actions.githubusercontent.com

Necesarios para cargar o descargar resúmenes de trabajos, registros, artefactos de flujo de trabajo y cachés:

Shell
results-receiver.actions.githubusercontent.com
*.blob.core.windows.net

Necesarios para las actualizaciones de versión del ejecutor:

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

Necesarios para recuperar tokens de OIDC:

Shell
*.actions.githubusercontent.com

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

Shell
*.pkg.github.com
ghcr.io

Se necesita para Almacenamiento de archivos de gran tamaño de Git

Shell
github-cloud.githubusercontent.com
github-cloud.s3.amazonaws.com

El archivo etc/hosts

Los ejecutores hospedados de GitHub se aprovisionan con un archivo etc/hosts que bloquea el acceso de red a varios grupos de minería de criptomonedas y sitios malintencionados. Los hosts como MiningMadness.com y cpu-pool.com se vuelven a enrutar a localhost para que no presenten un riesgo de seguridad significativo.

Sistemas de archivos

GitHub ejecuta acciones y comandos de shell en directorios específicos en la máquina virtual. Las rutas de archivo en las máquinas virtuales no son estáticas. Usa las variables de entorno que proporciona GitHub a fin de construir rutas de acceso de archivo para los directorios home, workspace y workflow.

DirectorioVariable de entornoDescripción
homeHOMEContiene datos relacionados con el usuario. Por ejemplo, este directorio podría contener las credenciales de un intento de inicio de sesión.
workspaceGITHUB_WORKSPACELas acciones y los comandos del shell se ejecutan en este directorio. Una acción puede modificar los contenidos de este directorio, al que pueden tener acceso acciones posteriores.
workflow/event.jsonGITHUB_EVENT_PATHLa carga POST del evento webhook que desencadenó el flujo de trabajo. GitHub reescribe esto cada vez que se ejecuta una acción para aislar el contenido del archivo entre acciones.

Para obtener una lista de las variables de entorno que crea GitHub para cada flujo de trabajo, consulta "variables".

Sistema de archivos del contenedor de Docker

Las acciones que se ejecutan en los contenedores Docker tienen directorios estáticos en la ruta de acceso /github. Sin embargo, te recomendamos encarecidamente que uses las variables de entorno predeterminadas para construir rutas de archivos en contenedores de Docker.

GitHub se reserva el prefijo de ruta de acceso /github y crea tres directorios para las acciones.

  • /github/home
  • /github/workspace: Nota: El usuario de Docker predeterminado (root) debe ejecutar GitHub Actions. Asegúrese de que Dockerfile no establece la instrucción USER; de lo contrario, no podrás acceder a GITHUB_WORKSPACE.
  • /github/workflow

Información adicional