Skip to main content

Elegir un ejecutor para un job

Definir el tipo de máquina que procesará un job en tu flujo de trabajo.

Información general

Use jobs.<job_id>.runs-on para definir el tipo de máquina en la que se ejecutará el trabajo.

: la máquina de destino puede ser un ejecutor hospedado por GitHub, larger runner o un ejecutor autohospedado. : puede dirigirse a los ejecutores en función de las etiquetas que se les han asignado, su pertenencia a grupos o una combinación de ambos.

  • Puedes proporcionar runs-on como una sola cadena o como una matriz de cadenas.
  • Si especificas una matriz de cadenas, el flujo de trabajo se ejecutará en cualquier ejecutor que coincida con todos los valores runs-on especificados.
  • Si quiere ejecutar el flujo de trabajo en varias máquinas, use jobs.<job_id>.strategy.

Selección de ejecutores hospedados en GitHub

Si usas un ejecutor hospedado en GitHub, cada trabajo se ejecuta en una nueva instancia de una imagen de ejecutor especificada por runs-on.

Los tipos de ejecutores alojados GitHub disponibles son:

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
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
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 o macos-12 La etiqueta macos-latest usa actualmente la imagen del ejecutor de macOS 12.
macOS Big Sur 11 macos-11
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.

Ejemplo: Especificación de un sistema operativo

runs-on: ubuntu-latest

Para obtener más información, consulte "Acerca de los ejecutores hospedados en GitHub".

Selección de ejecutores autohospedados

A fin de especificar un ejecutor autohospedado para el trabajo, configure runs-on en el archivo de flujo de trabajo con las etiquetas de ejecutor autohospedado.

Todos los ejecutores autohospedados tienen la etiqueta self-hosted. El utilizar únicamente esta etiqueta seleccionará cualquier ejecutor auto-hospedado. Para seleccionar los ejecutores que cumplen con determinados criterios, como el sistema operativo o la arquitectura, se recomienda proporcionar una serie de etiquetas que comience con self-hosted (debe estar en primer lugar) y que luego incluya etiquetas adicionales según sea necesario. Cuando especifiques un arreglo de etiquetas, los jobs se pondrán en cola cuando se trate de ejecutores que tengan todas las etiquetas que especificas.

Aunque la etiqueta self-hosted no es obligatoria, se recomienda encarecidamente especificarla cuando se usen ejecutores autohospedados, para garantizar que el trabajo no especifique un ejecutor hospedado en GitHub futuro o actual por accidente.

Ejemplo: Uso de etiquetas para la selección del ejecutor

runs-on: [self-hosted, linux]

Para más información, vea "Acerca de los ejecutores autohospedados" y "Uso de ejecutores autohospedados en un flujo de trabajo".

Elección de ejecutores en un grupo

Puedes usar runs-on para dirigirte a grupos de ejecutores, de modo que el trabajo se ejecute en cualquier ejecutor que sea miembro de ese grupo. Para un control más granular, también puedes combinar grupos de ejecutores con etiquetas.

Los grupos de ejecutores solo pueden tener larger runner o ejecutores autohospedados como miembros.

Ejemplo: Uso de grupos para controlar dónde se ejecutan los trabajos

En este ejemplo, se han agregado ejecutores de Ubuntu a un grupo denominado ubuntu-runners. La clave runs-on envía el trabajo a cualquier ejecutor disponible del grupo ubuntu-runners:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: 
      group: ubuntu-runners
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Ejemplo: Combinación de grupos y etiquetas

Al combinar grupos y etiquetas, el ejecutor debe cumplir ambos requisitos para poder ejecutar el trabajo.

En este ejemplo, un grupo de ejecutores denominado ubuntu-runners se rellena con ejecutores de Ubuntu, a los que también se ha asignado la etiqueta ubuntu-20.04-16core. La clave runs-on combina group y labels para que el trabajo se enrute a cualquier ejecutor disponible dentro del grupo que también tenga una etiqueta coincidente:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      group: ubuntu-runners
      labels: ubuntu-20.04-16core
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v