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 hébergé par GitHub, exécuteur plus grand ou un exécuteur auto-hébergé.
-
Vous pouvez cibler les coureurs en fonction des étiquettes qui leur ont été attribuées, de leur appartenance à un groupe ou d'une combinaison de ces éléments.
-
Vous pouvez fournir
runs-onsous 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: valueutilisant les clésgroupoulabels
-
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-onspécifiées. Par exemple, ici, le travail s’exécute uniquement sur un exécuteur auto-hébergé qui a les étiquetteslinux,x64etgpu: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 }}".
Choisir les runners 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.
La valeur des exécutions, lorsque vous utilisez un exécuteur hébergé par GitHub, est une étiquette d’exécuteur ou le nom d’un groupe d’exécuteurs. Les étiquettes des exécuteurs standard hébergés par GitHub sont indiquées dans les tableaux suivants.
Pour plus d’informations, consultez « Exécuteurs hébergés par GitHub ».
Runners hébergés par GitHub standard pour les référentiels publics
Pour les dépôts publics, les travaux utilisant les étiquettes de flux de travail indiquées dans le tableau ci-dessous s’exécutent avec les spécifications associées. À l’exception des coureurs à UC unique, tous les GitHub-hosted runners sont des nouvelles machines virtuelles hébergées par GitHub. Les exécuteurs Single-CPU sont hébergés dans un conteneur sur une machine virtuelle partagée, voir Référence des exécuteurs hébergés par GitHub. L’utilisation des runners standard hébergés par GitHub est gratuite et illimitée pour les référentiels publics.
| Machine virtuelle / conteneur | Processeur (CPU) | Mémoire (RAM) | Stockage (SSD) | Architecture | Étiquette de workflow |
|---|---|---|---|---|---|
| Linux | 1 | 5 GB | 14 GB | x64 |
ubuntu-slim
|
| Linux | 4 | 16 Go | 14 Go | x64 |
|
Les exécuteurs hébergés GitHub standard pour des dépôts privés internal and
Pour les référentiels internes et privés, les jobs utilisant les étiquettes de workflow indiquées dans le tableau ci-dessous s’exécutent sur des machines virtuelles dotées des spécifications associées. Ces runners utilisent le quota de minutes gratuites de votre compte GitHub, puis sont facturés selon un tarif à la minute. Consultez « Tarification des runners Actions ».
| Machine virtuelle | Processeur (CPU) | Mémoire (RAM) | Stockage (SSD) | Architecture | Étiquette de workflow |
|---|---|---|---|---|---|
| Linux | 1 | 5 GB | 14 GB | x64 |
ubuntu-slim
|
| Linux | 2 | 8 Go | 14 Go | x64 |
|
Remarque
Les runners macOS ne sont pas disponibles sur les sous-domaines de GHE.com, tels que octocorp.ghe.com.
En plus des exécuteurs standard hébergés par GitHub, GitHub offre aux clients sur des plans GitHub Team et GitHub Enterprise Cloud une gamme de machines virtuelles dotées de fonctionnalités avancées, comme plus de cœurs et d’espace disque, des machines alimentées par GPU et des machines alimentées par ARM. Pour plus d’informations, consultez « Exécuteurs plus grands ».
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 de 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 « Exécuteurs hébergés par GitHub ».
Choix des exécuteurs auto-hébergés
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.
Les groupes d’exécuteurs peuvent uniquement avoir des exécuteur plus grand ou des exécuteurs auto-hébergés comme.
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@v5
- 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-24.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-24.04-16core
steps:
- uses: actions/checkout@v5
- 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 ]