Vue d’ensemble des exécuteurs hébergés par GitHub
Les exécuteurs sont les machines qui exécutent les travaux dans un workflow GitHub Actions. Par exemple, un exécuteur peut cloner votre dépôt localement, installer un logiciel de test, puis exécuter des commandes qui évaluent votre code.
GitHub fournit des exécuteurs qui vous permettent d’exécuter vos travaux. Toutefois, vous pouvez héberger vos propres exécuteurs. Chaque exécuteur hébergé par GitHub est une nouvelle machine virtuelle hébergée par GitHub sur laquelle l’application d’exécuteur et d’autres outils sont préinstallés. Elle est disponible avec les systèmes d’exploitation Ubuntu Linux, Windows ou macOS. Lorsque vous utilisez un exécuteur hébergé par GitHub, la maintenance et les mises à niveau de la machine sont effectuées automatiquement.
Utilisation d’un exécuteur hébergé par GitHub
Pour vous servir d’un exécuteur hébergé par GitHub, créez un travail et utilisez runs-on
afin de spécifier le type d’exécuteur qui va traiter le travail, par exemple ubuntu-latest
, windows-latest
ou macos-latest
. Pour la liste complète des types d’exécuteurs, consultez « À propos des exécuteurs hébergés par GitHub ».
Quand le travail commence, GitHub provisionne automatiquement une nouvelle machine virtuelle pour ce travail. Toutes les étapes du travail s’exécutent sur la machine virtuelle. Ainsi, elles peuvent partager des informations à l’aide du système de fichiers de l’exécuteur. Vous pouvez exécuter des workflows directement sur la machine virtuelle ou dans un conteneur Docker. À la fin du travail, la machine virtuelle est automatiquement désactivée.
Le diagramme suivant illustre l’exécution de deux travaux d’un workflow sur deux exécuteurs différents hébergés par GitHub.
L’exemple de workflow suivant comporte deux travaux, nommés Run-npm-on-Ubuntu
et Run-PSScriptAnalyzer-on-Windows
. Quand ce workflow se déclenche, GitHub provisionne une nouvelle machine virtuelle pour chaque travail.
- Le travail nommé
Run-npm-on-Ubuntu
s’exécute sur une machine virtuelle Linux, car leruns-on:
du travail spécifieubuntu-latest
. - Le travail nommé
Run-PSScriptAnalyzer-on-Windows
s’exécute sur une machine virtuelle Windows, car leruns-on:
du travail spécifiewindows-latest
.
name: Run commands on different operating systems
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
Run-npm-on-Ubuntu:
name: Run npm on Ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm help
Run-PSScriptAnalyzer-on-Windows:
name: Run PSScriptAnalyzer on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Install PSScriptAnalyzer module
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module PSScriptAnalyzer -ErrorAction Stop
- name: Get list of rules
shell: pwsh
run: |
Get-ScriptAnalyzerRule
Pendant l’exécution du travail, vous pouvez voir les journaux et la sortie dans l’IU de GitHub :
L’exécuteur GitHub Actions est une application open source. Vous pouvez signaler et contribuer à résoudre des problèmes dans le référentiel de l’exécuteur.
Exécuteurs et ressources matérielles pris en charge
Remarque : GitHub propose également des exécuteur plus grand, qui sont disponibles dans des configurations plus grandes. Pour plus d’informations, consultez « Utilisation des exécuteurs plus grands ».
Spécification matérielle pour les machines virtuelles Windows et Linux :
- Processeur 2 cœurs (x86_64)
- 7 Go de RAM
- 14 Go d’espace sur disque SSD
Spécification matérielle pour les machines virtuelles macOS :
- Processeur 3 cœurs (x86_64)
- 14 Go de RAM
- 14 Go d’espace sur disque SSD
Image de l’exécuteur | Étiquette de workflow YAML | Remarques |
---|---|---|
Windows Server 2022 |
windows-latest ou windows-2022
|
L’étiquette windows-latest utilise actuellement l’image de l’exécuteur Windows Server 2022.
|
Windows Server 2019 |
windows-2019
|
None |
Ubuntu 22.04 |
ubuntu-latest ou ubuntu-22.04
|
L’étiquette ubuntu-latest utilise actuellement l’image de l’exécuteur Ubuntu 22.04.
|
Ubuntu 20.04 |
ubuntu-20.04
|
Aucun |
Ubuntu 18.04 [déconseillé] |
ubuntu-18.04
|
Migrer vers ubuntu-20.04 ou ubuntu-22.04 . Pour plus d’informations, consultez ce billet de blog GitHub.
|
macOS Monterey 12 |
macos-latest macos-12 macos-latest-xl , macos-12-xl ou
|
Les étiquettes de workflow YAML macos-latest et macos-latest-xl utilisent actuellement l’image d’exécuteur macOS 12.
|
macOS Big Sur 11 |
macos-11
|
None |
macOS Catalina 10.15 [déprécié] |
macos-10.15
|
Migrer vers macOS-11 ou macOS-12 . Pour plus d’informations, consultez ce billet de blog 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.
Les journaux de workflow répertorient l’exécuteur utilisé pour exécuter un travail. Pour plus d’informations, consultez « Affichage de l’historique des exécutions de workflows ».
Logiciels pris en charge
Les outils logiciels inclus dans les exécuteurs hébergés par GitHub sont mis à jour chaque semaine. Le processus de mise à jour prend plusieurs jours, et la liste des logiciels préinstallés sur la branche main
est mise à jour une fois l’ensemble du déploiement terminé.
Logiciels préinstallés
Les journaux de workflow incluent un lien vers les outils préinstallés sur l’exécuteur exact. Pour trouver ces informations dans le journal de workflow, développez la section Set up job
. Sous cette section, développez la section Runner Image
. Le lien suivant Included Software
décrit les outils préinstallés sur l’exécuteur qui a exécuté le workflow.
Pour plus d’informations, consultez « Affichage de l’historique des exécutions de workflows ».
Pour obtenir la liste globale des outils inclus pour chaque système d’exploitation d’exécuteur, consultez les liens ci-dessous :
- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
- Ubuntu 18.04 LTS (déconseillé)
- Windows Server 2022
- Windows Server 2019
- macOS 12
- macOS 11
- macOS 10.15
Les exécuteurs hébergés par GitHub incluent les outils intégrés par défaut du système d’exploitation, en plus des packages listés dans les références ci-dessus. Par exemple, les exécuteurs Ubuntu et macOS incluent grep
, find
et which
, entre autres outils par défaut.
Vous pouvez également afficher une nomenclature logicielle (SBOM) pour chaque build des images de l’exécuteur Windows et Ubuntu. Pour plus d’informations, consultez « Durcissement de la sécurité pour GitHub Actions ».
Utilisation des logiciels préinstallés
Nous vous recommandons d’utiliser des actions pour interagir avec les logiciels installés sur les exécuteurs. Cette approche présente plusieurs avantages :
- En général, les actions fournissent des fonctionnalités plus flexibles, comme la sélection des versions, la possibilité de passer des arguments, et des paramètres
- Cela garantit que les versions d’outils utilisées dans votre workflow restent les mêmes, quelles que soient les mises à jour logicielles
S’il y a un outil que vous souhaitez demander, ouvrez un problème dans actions/runner-images. Ce dépôt contient également des annonces sur toutes les principales mises à jour logicielles sur les exécuteurs.
Installation de logiciels supplémentaires
Vous pouvez installer des logiciels supplémentaires sur les exécuteurs hébergés par GitHub. Pour plus d’informations, consultez « Personnalisation des exécuteurs hébergés par GitHub ».
Hôtes cloud utilisés par les exécuteurs hébergés par GitHub
GitHub héberge les exécuteurs Linux et Windows sur des machines virtuelles Standard_DS2_v2
dans Microsoft Azure. L’application d’exécuteur GitHub Actions est installée sur ces machines. L’application d’exécuteur hébergé par GitHub est une duplication (fork) de l’agent Azure Pipelines. Les paquets ICMP entrants sont bloqués pour toutes les machines virtuelles Azure. Par conséquent, les commandes ping ou traceroute peuvent ne pas fonctionner. Pour plus d’informations sur les ressources Standard_DS2_v2
, consultez « Séries Dv2 et DSv2 » dans la documentation de Microsoft Azure.
GitHub héberge les exécuteurs macOS dans le propre cloud macOS de GitHub.
Continuité du workflow
Si les services GitHub Actions sont temporairement indisponibles, alors une exécution de workflow est ignorée si elle n’a pas été mise en file d’attente dans les 30 minutes suivant son déclenchement. Par exemple, si un workflow est déclenché et que les services GitHub Actions ne sont pas disponibles pendant 31 minutes ou plus, l’exécution du workflow n’est pas traitée.
En outre, si l’exécution du workflow a été correctement mise en file d’attente, mais n’a pas été traitée par un exécuteur hébergé par GitHub dans les 45 minutes, l’exécution du workflow mis en file d’attente est ignorée.
Privilèges d’administration
Les machines virtuelles Linux aussi bien que macOS s’exécutent à l’aide de sudo
sans mot de passe. Lorsque vous devez exécuter des commandes ou installer des outils qui nécessitent plus de privilèges que ceux de l’utilisateur actuel, vous pouvez utiliser sudo
sans avoir à fournir de mot de passe. Pour plus d’informations, consultez le manuel sudo.
Les machines virtuelles Windows sont configurées pour s’exécuter en tant qu’administrateurs avec le Contrôle de compte d’utilisateur (UAC) désactivé. Pour plus d’informations, consultez « Fonctionnement du contrôle de compte d’utilisateur » dans la documentation Windows.
Adresses IP
Remarque : Si vous utilisez une liste verte d’adresses IP pour votre organisation ou votre compte d’entreprise GitHub, vous ne pouvez pas utiliser des exécuteurs hébergés par GitHub et vous devez plutôt utiliser des exécuteurs auto-hébergés. Pour plus d’informations, consultez « À propos des exécuteurs auto-hébergés ».
Pour obtenir la liste des plages d’adresses IP utilisées par GitHub Actions pour les exécuteurs hébergés par GitHub, vous pouvez utiliser l’API REST GitHub. Pour plus d’informations, consultez la clé actions
dans la réponse du point de terminaison « Meta ».
Les exécuteurs Windows et Ubuntu sont hébergés dans Azure et ont par la suite les mêmes plages d’adresses IP que les centres de données Azure. Les exécuteurs macOS sont hébergés dans le dans le propre cloud macOS de GitHub.
En raison du nombre élevé de plages d’adresses IP pour les exécuteurs hébergés par GitHub, nous vous déconseillons d’utiliser ces plages comme listes vertes pour vos ressources internes.
La liste des données d’adresses IP GitHub Actions retournées par l’API est mise à jour une fois par semaine.
Systèmes de fichiers
GitHub exécute des actions et des commandes d’interpréteur de commandes dans des répertoires spécifiques sur la machine virtuelle. Les chemins des fichiers sur les machines virtuelles ne sont pas statiques. Utilisez les variables d’environnement fournies par GitHub pour construire des chemins de fichiers pour les répertoires home
, workspace
et workflow
.
Répertoire | Variable d’environnement | Description |
---|---|---|
home | HOME | Contient des données associées aux utilisateurs. Par exemple, ce répertoire peut contenir des informations d’identification provenant d’une tentative de connexion. |
workspace | GITHUB_WORKSPACE | Les actions et les commandes d’interpréteur de commandes s’exécutent dans ce répertoire. Une action peut modifier le contenu de ce répertoire, auquel les actions suivantes peuvent accéder. |
workflow/event.json | GITHUB_EVENT_PATH | Charge utile POST de l’événement de webhook qui a déclenché le workflow. GitHub réécrit cette opération chaque fois qu’une action s’exécute pour isoler le contenu du fichier entre les actions. |
Pour obtenir la liste des variables d’environnement créées par GitHub pour chaque workflow, consultez « Variables ».
Système de fichiers de conteneur Docker
Les actions qui s’exécutent dans des conteneurs Docker ont des répertoires statiques sous le chemin /github
. Toutefois, nous vous recommandons vivement d’utiliser les variables d’environnement par défaut pour construire des chemins de fichiers dans des conteneurs Docker.
GitHub réserve le préfixe du chemin /github
et crée trois répertoires pour les actions.
/github/home
/github/workspace
- Remarque : GitHub Actions doit être exécuté par l’utilisateur Docker par défaut (racine). Vérifiez que votre Dockerfile ne définit pas l’instructionUSER
, sinon vous ne pourrez pas accéder àGITHUB_WORKSPACE
./github/workflow
Pour aller plus loin
- « Gestion de la facturation pour GitHub Actions »
- Vous pouvez utiliser une stratégie de matrice pour exécuter vos travaux sur plusieurs images. Pour plus d’informations, consultez « Utilisation d’une matrice pour vos travaux ».