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é.

  • 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
    • 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, le travail s’exécute uniquement sur un exécuteur auto-hébergé qui a les étiquettes linux, x64 et gpu :

    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
    <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></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> (préversion publique), <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/partner-runner-images/blob/main/images/arm-ubuntu-24-image.md">ubuntu-24.04-arm</a></code>, <code><a href="https://github.com/actions/partner-runner-images/blob/main/images/arm-ubuntu-22-image.md">ubuntu-22.04-arm</a></code></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/partner-runner-images/blob/main/images/arm-windows-11-image.md">windows-11-arm</a></code>
  </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>

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
    <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></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/partner-runner-images/blob/main/images/arm-ubuntu-24-image.md">ubuntu-24.04-arm</a></code>, <code><a href="https://github.com/actions/partner-runner-images/blob/main/images/arm-ubuntu-22-image.md">ubuntu-22.04-arm</a></code></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/partner-runner-images/blob/main/images/arm-windows-11-image.md">windows-11-arm</a></code>
  </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.

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 ]