Note
Actualmente los ejecutores hospedados por GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.
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 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.
- Una sola variable que contiene una cadena.
- Una matriz de cadenas, variables que contienen cadenas o una combinación de ambas.
- Un par
key: value
que usa las clavesgroup
olabels
.
-
Si especificas una matriz de cadenas o variables, el flujo de trabajo se ejecutará en cualquier ejecutor que coincida con todos los valores
runs-on
especificados. Por ejemplo, aquí el trabajo solo se ejecutará en un ejecutor autohospedado que tenga las etiquetaslinux
,x64
ygpu
:runs-on: [self-hosted, linux, x64, gpu]
Para más información, consulta "Selección de ejecutores autohospedados".
-
Puedes combinar cadenas y variables en una matriz. Por ejemplo:
on: workflow_dispatch: inputs: chosen-os: required: true type: choice options: - Ubuntu - macOS jobs: test: runs-on: [self-hosted, "${{ inputs.chosen-os }}"] steps: - run: echo Hello world!
-
Si quiere ejecutar el flujo de trabajo en varias máquinas, use
jobs.<job_id>.strategy
.
Note
Las comillas no son necesarias alrededor de cadenas simples como self-hosted
, pero sí lo son en expresiones como "${{ inputs.chosen-os }}"
.
Selección de ejecutores hospedados en GitHub
Note
Actualmente los ejecutores hospedados por GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.
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.
Los ejecutores autohospedados pueden tener la etiqueta self-hosted
. Al configurar un ejecutor autohospedado, de forma predeterminada se incluirá la etiqueta self-hosted
. Puedes pasar la marca --no-default-labels
para evitar que se aplique la etiqueta autohospedada. Las etiquetas pueden usarse para crear opciones de destino para los ejecutores, 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.
Hay que tener en cuenta que action-runner-controller no admite varias etiquetas y no admite la etiqueta self-hosted
.
Ejemplo: Uso de etiquetas para la selección del ejecutor
runs-on: [self-hosted, linux]
Para obtener 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.
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@v4
- uses: actions/setup-node@v4
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@v4
- uses: actions/setup-node@v4
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
Ejemplo: Uso de prefijos para diferenciar grupos de ejecutores
Por ejemplo, si tienes un grupo de ejecutores denominado my-group
en la organización y otro denominado my-group
en la empresa, puedes actualizar el archivo de flujo de trabajo para usar org/my-group
o ent/my-group
para diferenciar entre los dos.
Usar org/
:
runs-on:
group: org/my-group
labels: [ self-hosted, label-1 ]
Usar ent/
:
runs-on:
group: ent/my-group
labels: [ self-hosted, label-1 ]