Skip to main content

Choix de l’exécuteur pour un travail

Définissez le type de machine qui va traiter un travail dans votre workflow.

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 soit un GitHubrunner hébergé, exécuteur plus grand, soit un runner 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-on sous la forme suivante :

    • Une seule chaîne de caractères
    • 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és group ou labels
  • 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, la tâche ne s’exécutera que sur un exécuteur auto-hébergé portant les étiquettes linux, x64 et gpu :

    runs-on: [self-hosted, linux, x64, gpu]
    

    Pour plus d’informations, consultez Choisir des runners 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 elles sont requises pour les expressions comme"${{ inputs.chosen-os }}" .

Choisir les runners hébergés par GitHub

Si vous utilisez un runner hébergé sur GitHub, chaque tâche s’exécute sur une nouvelle instance d’une image de runner spécifiée par runs-on.

La valeur de runs-on, lorsque vous utilisez un exécuteur hébergé par GitHub, correspond à une étiquette de workflow ou au nom d’un groupe d’exécuteurs. Les étiquettes des exécuteurs standard hébergés GitHub sont affichées dans les tableaux suivants.

Pour plus d’informations, consultez « Exécuteurs hébergés par GitHub ».

Exécuteurs hébergés standard GitHubpour 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 exécuteurs hébergés standard GitHub est gratuite et illimitée sur les référentiels publics.

Machine virtuelle / conteneur Processeur (CPU) Mémoire (RAM) Stockage (SSD) Architecture Étiquette de workflow
Linux15 GB14 GB x64 ubuntu-slim
Linux416 Go14 Go x64
    <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md">ubuntu-latest</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md">ubuntu-24.04</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md">ubuntu-22.04</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2604-Readme.md">ubuntu-26.04</a></code> (Version d'essai publique) </td>
</tr>
<tr>
  <td>Windows</td>
  <td>4</td>
  <td>16 Go</td>
  <td>14 Go</td>
  <td> x64 </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md">windows-latest</a></code>, , <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md">windows-2025</a></code><code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-VS2026-Readme.md">windows-2025-vs2026</a></code>, ,<code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md">windows-2022</a></code></td>
</tr>
<tr>
  <td>Linux</td>
  <td>4</td>
  <td>16 Go</td>
  <td>14 Go</td>
  <td> arm64 </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Arm64-Readme.md">ubuntu-24.04-arm</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Arm64-Readme.md">ubuntu-22.04-arm</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2604-Arm64-Readme.md">ubuntu-26.04-arm</a></code> (Version d'essai publique) </td>
</tr>
<tr>
  <td>Windows</td>
  <td>4</td>
  <td>16 Go</td>
  <td>14 Go</td>
  <td>arm64</td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows11-Arm64-Readme.md">windows-11-arm</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows11-VS2026-Arm64-Readme.md">windows-11-vs2026-arm</a></code> (Version d'essai publique) </td>
</tr>
<tr>
  <td>macOS</td>
  <td>4</td>
  <td>14 Go</td>
  <td>14 Go</td>
  <td> Intel </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md">macos-15-intel</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-26-Readme.md">macos-26-intel</a></code></td>
</tr>
<tr>
  <td>macOS</td>
  <td>3 (M1)</td>
  <td>7 Go</td>
  <td>14 Go</td>
  <td> arm64 </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md">macos-latest</a></code>, , <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md">macos-14</a></code><code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md">macos-15</a></code>, ,<code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md">macos-26</a></code></td>
</tr>

Exécuteurs standard hébergés GitHubpour référentiels internes et privés

Pour les référentiels internes et privés, les travaux utilisant les étiquettes de flux de travail indiquées dans le tableau ci-dessous s’exécutent sur des machines virtuelles avec les spécifications associées. Ces coureurs utilisent l’allocation de votre GitHub compte de minutes gratuites, puis sont facturés aux tarifs par minute. Consultez « Tarification des runners Actions ».

Machine virtuelle Processeur (CPU) Mémoire (RAM) Stockage (SSD) Architecture Étiquette de workflow
Linux15 GB14 GB x64 ubuntu-slim
Linux28 Go14 Go x64
    <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md">ubuntu-latest</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md">ubuntu-24.04</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md">ubuntu-22.04</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2604-Readme.md">ubuntu-26.04</a></code> (Version d'essai publique) </td>
</tr>
<tr>
  <td>Windows</td>
  <td>2</td>
  <td>8 Go</td>
  <td>14 Go</td>
  <td> x64 </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md">windows-latest</a></code>, , <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md">windows-2025</a></code><code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md">windows-2022</a></code></td>
</tr>
<tr>
  <td>Linux</td>
  <td>2</td>
  <td>8 Go</td>
  <td>14 Go</td>
  <td> arm64 </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Arm64-Readme.md">ubuntu-24.04-arm</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Arm64-Readme.md">ubuntu-22.04-arm</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2604-Arm64-Readme.md">ubuntu-26.04-arm</a></code> (Version d'essai publique) </td>
</tr>
<tr>
  <td>Windows</td>
  <td>2</td>
  <td>8 Go</td>
  <td>14 Go</td>
  <td> arm64 </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows11-Arm64-Readme.md">windows-11-arm</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/windows/Windows11-Arm64-VS2026-Readme.md">windows-11-vs2026-arm</a></code> (Version d'essai publique) </td>
</tr>
<tr>
  <td>macOS</td>
  <td>4</td>
  <td>14 Go</td>
  <td>14 Go</td>
  <td> Intel </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md">macos-15-intel</a></code>, <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-26-Readme.md">macos-26-intel</a></code></td>
</tr>
<tr>
  <td>macOS</td>
  <td>3 (M1)</td>
  <td>7 Go</td>
  <td>14 Go</td>
  <td> arm64 </td>
  <td>
          
    <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md">macos-latest</a></code>, , <code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md">macos-14</a></code><code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md">macos-15</a></code>, ,<code><a href="https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md">macos-26</a></code></td>
</tr>

Remarque

Les runners macOS ne sont pas disponibles sur les sous-domaines de GHE.com, tels que octocorp.ghe.com.

Outre les runners hébergés standard GitHub, GitHub offre aux abonnés aux offres GitHub Team et GitHub Enterprise Cloud une gamme de machines virtuelles gérées dotées de fonctionnalités avancées, par exemple : davantage de cœurs et d’espace disque, des machines équipées de GPU et des machines basées sur ARM. Pour plus d’informations, consultez « Exécuteurs plus grands ».

Remarque

Les -latest images de runner sont les dernières images stables que GitHub fournit et ne sont pas nécessairement la version la plus récente du système d’exploitation disponible chez l’éditeur 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 « 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é.

Les runners auto-hébergés peuvent avoir le self-hosted label. Lors de la configuration d’un exécuteur auto-hébergé, nous inclurons l’étiquette self-hosted par défaut. Vous pouvez utiliser l’option --no-default-labels pour empêcher l’application du label auto-hébergé. Les étiquettes peuvent être utilisées pour créer des options de ciblage pour les exécuteurs, telles que le système d’exploitation ou l’architecture. Nous recommandons de fournir un tableau d’étiquettes qui commence par self-hosted (ceci doit être listé en premier) et inclut ensuite des étiquettes supplémentaires si nécessaire. 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.

Remarque

Actions Runner Controller ne prend pas en charge le self-hosted label.

Exemple : Utilisation d’étiquettes pour la sélection des exécuteurs

runs-on: [self-hosted, linux]

Pour plus d’informations, consultez « 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 de runners, de sorte que la tâche s’exécute sur n’importe quel runner membre de ce groupe. Pour un contrôle plus précis, vous pouvez également combiner des groupes de runners avec des labels.

Les groupes d’exécuteurs ne peuvent avoir comme membres que exécuteur plus grands ou des exécuteurs auto-hébergés.

Exemple : utilisation de groupes pour contrôler où les travaux sont exécutés

Dans cet exemple, des runners ont été ajoutés à un groupe appelé build-runners. La clé runs-on envoie le travail à n’importe quel exécuteur disponible dans le groupe build-runners :

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: 
      group: build-runners
    steps:
      - uses: actions/checkout@v6
      - 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, la clé runs-on combine group et labels de sorte que le job soit acheminé vers n’importe quel runner disponible dans le groupe qui possède é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@v6
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Exemple : utiliser des préfixes pour différencier les groupes de runners

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 ]