Remarque : Les exécuteurs hébergés sur GitHub ne sont pas pris en charge sur GitHub Enterprise Server. Vous pouvez voir plus d’informations sur le support futur planifié dans la GitHub public roadmap.
Vue d’ensemble
Utilisez jobs.<job_id>.runs-on
pour définir le type de machine sur laquelle le travail doit être exécuté.
-
La machine de destination peut être un exécuteur auto-hébergé.
-
Vous pouvez cibler des exécuteurs en fonction des étiquettes qui leur sont affectées et/ou de leur appartenance au groupe.
-
Vous pouvez fournir
runs-on
sous la forme suivante :- une seule chaîne
- une seule variable contenant une chaîne
- un tableau de chaînes, des variables contenant des chaînes ou une combinaison des deux
- une paire
key: value
utilisant les clésgroup
oulabels
-
Si vous spécifiez un tableau de chaînes ou de variables, votre workflow s’exécute sur n’importe quel exécuteur correspondant à toutes les valeurs
runs-on
spécifiées. Par exemple, ici, le travail s’exécute uniquement sur un exécuteur auto-hébergé qui a les étiquetteslinux
,x64
etgpu
:runs-on: [self-hosted, linux, x64, gpu]
Pour plus d’informations, consultez « Choix d’exécuteurs auto-hébergés ».
-
Vous pouvez mélanger des chaînes et des variables dans un tableau. Par exemple :
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 vous souhaitez exécuter votre workflow sur plusieurs machines, utilisez
jobs.<job_id>.strategy
.
Remarque : les guillemets ne sont pas obligatoires autour de chaînes simples comme self-hosted
, mais ils sont requis pour des expressions comme "${{ inputs.chosen-os }}"
.
Remarque : Les exécuteurs hébergés sur GitHub ne sont pas pris en charge sur GitHub Enterprise Server. Vous pouvez voir plus d’informations sur le support futur planifié dans la GitHub public roadmap.
Choix des exécuteurs hébergés par GitHub
Si vous utilisez un exécuteur hébergé par GitHub, chaque travail s’exécute sur une nouvelle instance d’une image d’exécuteur spécifiée par runs-on
.
Les étiquettes d’exécuteurs hébergés par GitHub disponibles sont les suivantes :
OS (Étiquette de workflow YAML) | Notes |
---|---|
ubuntu-latest , ubuntu-22.04 , ubuntu-20.04
|
L’étiquette ubuntu-latest utilise actuellement l’image de l’exécuteur Ubuntu 22.04.
|
windows-latest , windows-2022 , windows-2019
|
L’étiquette windows-latest utilise actuellement l’image de l’exécuteur Windows Server 2022.
|
macos-latest , macos-14 [Bêta], macos-13 , macos-12 , macos-11
|
L’étiquette macos-latest de workflow utilise actuellement l’image d’exécuteur macOS 12.
|
Pour plus d’informations sur lesspécifications des exécuteurs hébergés par GitHub, consultez « À propos des exécuteurs hébergés par GitHub ».
Remarque : Les images d’exécuteur -latest
sont les dernières images stables que fournit GitHub et peuvent ne pas correspondre à la version la plus récente du système d’exploitation disponible auprès du fournisseur du système d’exploitation.
Avertissement : Les images bêta et dépréciées sont fournies « en l’état », « avec toutes les imperfections » et « selon la disponibilité », et sont exclues du contrat de niveau de service et de la garantie. Les images bêta peuvent ne pas être couvertes par le service client.
Exemple : Spécification d’un système d’exploitation
runs-on: ubuntu-latest
Pour plus d’informations, consultez « Utilisation des exécuteurs hébergés par GitHub ».
Choix des exécuteurs auto-hébergés
Si vous souhaitez spécifier un exécuteur autohébergé pour votre travail, configurez runs-on
dans votre fichier de workflow avec des étiquettes d’exécuteur autohébergé.
Tous les exécuteurs autohébergés ont l’étiquette self-hosted
. L’utilisation de cette seule étiquette permet de sélectionner n’importe quel exécuteur autohébergé. Pour sélectionner des exécuteurs qui répondent à certains critères, par exemple le système d’exploitation ou l’architecture, nous vous recommandons de fournir un tableau d’étiquettes qui commence par self-hosted
(doit être listé en premier), et qui comprend des étiquettes supplémentaires selon les besoins. Quand vous spécifiez un tableau d’étiquettes, les travaux sont mis en file d’attente sur des exécuteurs qui comportent toutes les étiquettes que vous indiquez.
Bien que l’étiquette self-hosted
ne soit pas obligatoire, nous vous recommandons vivement de la spécifier quand vous utilisez des exécuteurs autohébergés pour avoir la certitude que votre travail ne spécifie pas par inadvertance des exécuteurs, actuels ou futurs, hébergés sur GitHub.
Exemple : Utilisation d’étiquettes pour la sélection des exécuteurs
runs-on: [self-hosted, linux]
Pour plus d’informations, consultez « À propos des exécuteurs auto-hébergés » et « Utilisation d’exécuteurs auto-hébergés dans un workflow ».
Choix des exécuteurs dans un groupe
Vous pouvez utiliser runs-on
pour cibler des groupes d’exécuteurs, afin que le travail s’exécute sur n’importe quel exécuteur membre de ce groupe. Pour un contrôle plus précis, vous pouvez également combiner des groupes d’exécuteurs avec des étiquettes.
Exemple : utilisation de groupes pour contrôler où les travaux sont exécutés
Dans cet exemple, des exécuteurs Ubuntu ont été ajoutés à un groupe appelé ubuntu-runners
. La clé runs-on
envoie le travail à n’importe quel exécuteur disponible dans le groupe 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
Exemple : combinaison de groupes et d’étiquettes
Quand vous combinez des groupes et des étiquettes, l’exécuteur doit satisfaire aux deux exigences pour pouvoir exécuter le travail.
Dans cet exemple, un groupe d’exécuteurs appelé ubuntu-runners
est rempli avec des exécuteurs Ubuntu, qui ont également reçu l’étiquette ubuntu-20.04-16core
. La clé runs-on
combine group
et labels
afin que le travail soit routé vers n’importe quel exécuteur disponible au sein du groupe qui a également une étiquette correspondante :
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
Exemple : utilisation de préfixes pour différencier les groupes d’exécuteurs
Par exemple, si vous avez un groupe d’exécuteurs nommé my-group
dans l’organisation et un autre nommé my-group
dans l’entreprise, vous pouvez mettre à jour votre fichier de workflow pour utiliser org/my-group
ou ent/my-group
afin de les différencier.
Utilisation de org/
:
runs-on:
group: org/my-group
labels: [ self-hosted, label-1 ]
Utilisation de ent/
:
runs-on:
group: ent/my-group
labels: [ self-hosted, label-1 ]