Vous pouvez cibler des exécuteurs auto-hébergés à utiliser dans un workflow en fonction des étiquettes attribuées aux exécuteurs ou de leur appartenance à un groupe, ou encore d’une combinaison de toutes celles-ci.
Note
Actions Runner Controller ne prend pas en charge plusieurs étiquettes, seul le nom de l’exécuteur peut être utilisé à la place d’une étiquette
À propos des étiquettes d’exécuteurs auto-hébergés
Les étiquettes vous permettent d’envoyer des travaux de workflow à des types spécifiques d’exécuteurs auto-hébergés, en fonction de leurs caractéristiques partagées. Par exemple, si votre travail nécessite un composant matériel ou un package logiciel particulier, vous pouvez affecter une étiquette personnalisée à un exécuteur, puis configurer votre travail pour qu’il s’exécute uniquement sur les exécuteurs dotés de cette étiquette.
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 exécuteurs auto-hébergés sont susceptibles d’avoir l’étiquette self-hosted
. Lors de la configuration d’un exécuteur auto-hébergé, nous inclurons l’étiquette self-hosted
par défaut. Vous pouvez passer l’indicateur --no-default-labels
pour empêcher l’application de l’étiquette d’auto-hébergement. 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.
Notez qu’Actions Runner Controller ne prend pas en charge plusieurs étiquettes et ne prend pas en charge l’étiquette self-hosted
.
Pour plus d’informations sur la création d’étiquettes personnalisées et par défaut, consultez « Utilisation d’étiquettes avec des exécuteurs auto-hébergés ».
À propos des groupes d’exécuteurs auto-hébergés
Pour les exécuteurs auto-hébergés définis au niveau de l’organisation, vous pouvez regrouper vos exécuteurs avec des caractéristiques partagées dans un seul groupe d’exécuteurs, puis configurer votre travail pour cibler le groupe d’exécuteurs.
Pour spécifier un groupe d’exécuteurs auto-hébergés pour votre travail, configurez runs-on.group
dans votre fichier de workflow.
Pour plus d’informations sur la création et la gestion des groupes d’exécuteurs, consultez « Gestion de l’accès aux exécuteurs auto-hébergés à l’aide de groupes ».
Visualisation des exécuteurs disponibles pour un référentiel
Si vous avez un accès repo: write
à un référentiel, vous pouvez visualiser une liste des exécuteurs disponibles pour le référentiel.
-
Sur GitHub, accédez à la page principale du référentiel.
-
Sous le nom de votre dépôt, cliquez sur Actions.
-
Dans la barre latérale gauche, sous la section « Gestion », cliquez sur Exécuteurs.
-
Cliquez sur l’onglet Auto-hébergé en haut de la liste des exécuteurs.
-
Passez en revue la liste des exécuteurs auto-hébergés disponibles pour le référentiel. Cette liste inclut les exécuteurs auto-hébergés et les groupes identiques de l’exécuteur créés avec Actions Runner Controller. Pour plus d’informations, consultez « À propos d’Actions Runner Controller ».
-
Si vous le souhaitez, pour copier l’étiquette d’un exécuteur pour l’utiliser dans un flux de travail, cliquez sur à droite de l’exécuteur, puis cliquez sur Copier l’étiquette.
Remarque : les propriétaires d’entreprise et d’organisation peuvent créer de nouveaux exécuteurs à partir de cette page. Pour créer un exécuteur, cliquez sur Nouvel exécuteur en haut à droite de la liste des exécuteurs pour en ajouter au référentiel.
Pour plus d’informations, consultez « Gestion des exécuteurs de plus grande taille » et « Ajout d’exécuteurs auto-hébergés ».
Utilisation d’étiquettes par défaut pour router les travaux
Un exécuteur auto-hébergé reçoit automatiquement certaines étiquettes lorsqu’il est ajouté à GitHub Actions. Elles indiquent son système d’exploitation et sa plateforme matérielle :
self-hosted
: étiquette par défaut appliquée à tous les exécuteurs auto-hébergés.linux
,windows
oumacOS
: selon le système d’exploitation.x64
,ARM
ouARM64
: selon l’architecture matérielle.
Vous pouvez utiliser le code YAML de votre workflow pour envoyer des travaux à une combinaison de ces étiquettes. Dans cet exemple, un exécuteur auto-hébergé qui correspond aux trois étiquettes est autorisé à exécuter le travail :
runs-on: [self-hosted, linux, ARM64]
self-hosted
– Exécuter ce travail sur un exécuteur auto-hébergé.linux
– Utiliser uniquement un exécuteur Linux.ARM64
– Utiliser uniquement un exécuteur basé sur du matériel ARM64.
Pour créer des exécuteurs auto-hébergés individuels sans les étiquettes par défaut, passez l’indicateur --no-default-labels
lorsque vous créez l’exécuteur. Actions Runner Controller ne prend pas en charge plusieurs étiquettes.
Utilisation d’étiquettes personnalisées pour router les travaux
Vous pouvez créer des étiquettes personnalisées et les affecter à vos exécuteurs auto-hébergés à tout moment. Les étiquettes personnalisées vous permettent d’envoyer des travaux à des types particuliers d’exécuteurs auto-hébergés, selon la manière dont ils sont étiquetés.
Par exemple, si vous avez un travail qui requiert un type spécifique de matériel graphique, vous pouvez créer une étiquette personnalisée appelée gpu
et l’affecter aux exécuteurs sur lesquels le matériel est installé. Un exécuteur auto-hébergé qui correspond à toutes les étiquettes attribuées sera alors autorisé à exécuter le travail.
Cet exemple montre un travail qui combine des étiquettes par défaut et personnalisées :
runs-on: [self-hosted, linux, x64, gpu]
self-hosted
– Exécuter ce travail sur un exécuteur auto-hébergé.linux
– Utiliser uniquement un exécuteur Linux.x64
– Utiliser uniquement un exécuteur basé sur du matériel x64.gpu
– Cette étiquette personnalisée a été affectée manuellement aux exécuteurs auto-hébergés sur lesquels le matériel GPU est installé.
Ces étiquettes fonctionnent par accumulation, si bien qu’un exécuteur auto-hébergé doit avoir les quatre étiquettes pour pouvoir traiter le travail.
Utilisation de groupes pour router des travaux
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
Utilisation d’étiquettes et de groupes pour router des travaux
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
Priorité de routage pour les exécuteurs auto-hébergés
Lors du routage d’un travail vers un exécuteur auto-hébergé, GitHub recherche un exécuteur correspondant aux étiquettes runs-on
et/ou aux groupes
du travail :
- Si GitHub trouve un exécuteur en ligne et inactif qui correspond aux étiquettes
runs-on
et/ou aux groupes du travail, le travail est alors affecté et envoyé à l’exécuteur.- Si l’exécuteur ne récupère pas le travail affecté dans un délai de 60 secondes, le travail est remis en file d’attente afin qu’un nouvel exécuteur puisse l’accepter.
- Si GitHub ne trouve pas d’exécuteur en ligne et inactif correspondant aux étiquettes
runs-on
et/ou aux groupes du travail, le travail reste en file d’attente jusqu’à ce qu’un exécuteur soit en ligne. - Si le travail reste en file d’attente plus de 24 heures, il échoue.