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.
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-latest
o macos-latest
. Para obtener una lista completa de tipos de ejecutores, consulta "Acerca de los ejecutores hospedados en GitHub".
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.
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 elementoruns-on:
del trabajo especificaubuntu-latest
. - El trabajo denominado
Run-PSScriptAnalyzer-on-Windows
se ejecuta en una máquina virtual Windows, ya que el elementoruns-on:
del trabajo especificawindows-latest
.
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@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm help
Run-PSScriptAnalyzer-on-Windows:
name: Run PSScriptAnalyzer on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- 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:
La aplicación ejecutora de GitHub Actions es de código abierto. Puede contribuir y presentar incidencias en el repositorio runner.
Ejecutores y recursos de hardware compatibles
Nota: GitHub también ofrece ejecutor más grande, que están disponibles en configuraciones más grandes. Para obtener más información, vea «Uso de ejecutores más grandes».
Especificación de hardware para las máquinas virtuales Windows y Linux:
- CPU de 2 núcleos (x86_64)
- 7 GB de RAM
- 14 GB de espacio en SSD
Especificación de hardware para las máquinas virtuales macOS:
- CPU de 3 núcleos (x86_64)
- 14 GB de RAM
- 14 GB de espacio en SSD
Imagen del ejecutor | Etiqueta de flujo de trabajo YAML | Notas |
---|---|---|
Windows Server 2022 |
windows-latest o windows-2022
|
La etiqueta windows-latest usa actualmente la imagen del ejecutor de Windows Server 2022.
|
Windows Server 2019 |
windows-2019
|
None |
Ubuntu 22.04 |
ubuntu-latest o ubuntu-22.04
|
La etiqueta ubuntu-latest usa actualmente la imagen del ejecutor de Ubuntu 22.04.
|
Ubuntu 20.04 |
ubuntu-20.04
|
Ninguno |
Ubuntu 18.04 [en desuso] |
ubuntu-18.04
|
Realiza la migración a ubuntu-20.04 o ubuntu-22.04 . Para obtener más información, consulta esta entrada de blog de GitHub.
|
macOS Monterey 12 |
macos-latest , macos-12 , macos-latest-xl o macos-12-xl
|
Las etiquetas de flujo de trabajo macos-latest y macos-latest-xl usan actualmente la imagen de ejecutor de macOS 12.
|
macOS Big Sur 11 |
macos-11
|
None |
macOS Catalina 10.15 [en desuso] |
macos-10.15
|
Realiza la migración a macOS-11 o macOS-12 . Para obtener más información, consulta esta entrada de blog de GitHub.
|
Nota: 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.
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».
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 encontrar una lista general de las herramientas que se incluyen en cada sistema operativo de los ejecutores, visita los siguientes enlaces:
- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
- Ubuntu 18.04 LTS (en desuso)
- Windows Server 2022
- Windows Server 2019
- macOS 12
- macOS 11
- macOS 10.15
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 versiones, 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 Standard_DS2_v2
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. Para obtener más información sobre los recursos Standard_DS2_v2
, consulta "Series Dv2 y DSv2" en la documentación de Microsoft Azure.
GitHub hospeda ejecutores de macOS en la nube de macOS propia de GitHub.
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
Nota: Si usa una lista de direcciones IP permitidas para su cuenta de organización o de empresa GitHub, no puede usar ejecutores hospedados en GitHub y, en su lugar, debes usar ejecutores autohospedados. Para obtener más información, vea «Acerca de los ejecutores autohospedados».
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 de "Meta".
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.
La lista de direcciones IP permitidas de GitHub Actions que devuelve la API se actualiza una vez por semana.
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
.
Directorio | Variable de entorno | Descripción |
---|---|---|
home | HOME | Contiene datos relacionados con el usuario. Por ejemplo, este directorio podría contener las credenciales de un intento de inicio de sesión. |
workspace | GITHUB_WORKSPACE | Las 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.json | GITHUB_EVENT_PATH | La 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ónUSER
; de lo contrario, no podrás acceder aGITHUB_WORKSPACE
./github/workflow
Información adicional
- "Administrar la facturación para GitHub Actions"
- Puedes usar una estrategia de matriz para ejecutar los trabajos en varias imágenes. Para obtener más información, vea «Uso de una matriz para tus trabajos».