Skip to main content
Nous publions des mises à jour fréquentes de notre documentation, et la traduction de cette page peut encore être en cours. Pour obtenir les informations les plus actuelles, consultez la documentation anglaise.

Cette version de GitHub Enterprise ne sera plus disponible le 2023-03-15. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités, effectuez une mise à niveau vers la dernière version de GitHub Enterprise. Pour obtenir de l’aide sur la mise à niveau, contactez le support GitHub Enterprise.

Mise à l’échelle automatique avec des exécuteurs auto-hébergés

Vous pouvez mettre automatiquement à l’échelle vos exécuteurs autohébergés en réponse aux événements de webhook.

Remarque : Les exécuteurs hébergés sur GitHub ne sont pas pris en charge sur GitHub Enterprise Server. Vous pouvez voir plus d’informations sur le support futur planifié dans la GitHub public roadmap.

À propos de la mise à l’échelle automatique

Vous pouvez augmenter ou diminuer automatiquement le nombre d’exécuteurs auto-hébergés dans votre environnement en réponse aux événements de webhook que vous recevez avec une étiquette particulière. Par exemple, vous pouvez créer une automatisation qui ajoute un nouvel exécuteur auto-hébergé chaque fois que vous recevez un événement webhook workflow_job avec l’activité queued, ce qui vous informe qu’un nouveau travail est prêt à être traité. La charge utile de webhook inclut des données d’étiquette, afin que vous puissiez identifier le type d’exécuteur que le travail demande. Une fois le travail terminé, vous pouvez créer une automatisation qui supprime l’exécuteur en réponse à l’activité workflow_job completed.

GitHub recommande deux projets open source que vous pouvez utiliser pour la mise à l’échelle automatique de vos exécuteurs, et s’associe étroitement à eux. Une solution ou les deux peuvent être adaptées, en fonction de vos besoins.

Les dépôts suivants ont des instructions détaillées pour configurer les outils de mise à l’échelle automatique suivants :

Chaque solution comporte certaines spécificités qui peuvent être importantes à prendre en compte :

Caractéristiquesactions-runner-controllerterraform-aws-github-runner
RuntimeKubernetesMachines virtuelles Linux et Windows
Clouds pris en chargeAzure, Amazon Web Services, Google Cloud Platform, localementAmazon Web Services
Emplacements où les exécuteurs peuvent être mis à l’échelleAu niveau de la grande entreprise, d’une organisation ou d’un dépôt. Selon l’étiquette d’exécuteur et le groupe d’exécuteurs.Au niveau d’une organisation ou d’un dépôt. Selon l’étiquette d’exécuteur et le groupe d’exécuteurs.
Comment les exécuteurs peuvent être mis à l’échelleÉvénements webhook, planifiés, basés sur le tirage (pull)Événements webhook, planifiées (exécuteurs au niveau de l’organisation uniquement)

Utilisation d’exécuteurs éphémères pour la mise à l’échelle automatique

GitHub recommande d’implémenter la mise à l’échelle automatique avec des exécuteurs auto-hébergés éphémères. La mise à l’échelle automatique avec des exécuteurs auto-hébergés persistants n’est pas recommandée. Dans certains cas, GitHub ne peuvent pas garantir que les travaux ne sont pas affectés aux exécuteurs persistants pendant qu’ils sont arrêtés. Avec les exécuteurs éphémères, cela peut être garanti car GitHub affecte un seul travail à un exécuteur.

Cette approche vous permet de gérer vos exécuteurs en tant que systèmes éphémères, car vous pouvez utiliser l’automatisation pour fournir un environnement propre pour chaque travail. Cela permet de limiter l’exposition de toutes les ressources sensibles des travaux précédents, et permet également d’atténuer le risque qu’un exécuteur compromis reçoive de nouveaux travaux.

Pour ajouter un exécuteur éphémère à votre environnement, incluez le paramètre --ephemeral lors de l’inscription de votre exécuteur à l’aide de config.sh. Par exemple :

./config.sh --url https://github.com/octo-org --token example-token --ephemeral

Le service GitHub Actions désinscrit automatiquement l’exécuteur une fois qu’il a traité un travail. Vous pouvez ensuite créer votre propre automatisation qui efface l’exécuteur une fois qu’il a été désinscrit.

Remarque : Si un travail est étiqueté pour un certain type d’exécuteur, mais qu’aucun exécuteur de ce type n’est disponible, le travail n’échoue pas immédiatement au moment de la mise en file d’attente. Au lieu de cela, le travail reste en file d’attente jusqu’à ce que la période d’expiration de 24 heures expire.

Utilisation de webhooks pour la mise à l’échelle automatique

Vous pouvez créer votre propre environnement de mise à l’échelle automatique à l’aide des charges utiles reçues du webhook workflow_job. Ce webhook est disponible au niveau du dépôt, de l’organisation et de la grande entreprise, et la charge utile de cet événement contient une clé action qui correspond aux étapes du cycle de vie d’un travail de workflow. Par exemple, lorsque les travaux sont queued, in_progress et completed. Vous devez ensuite créer votre propre automatisation de mise à l’échelle en réponse à ces charges utiles de webhook.

Exigences relatives à l’authentification

Vous pouvez inscrire et supprimer des exécuteurs auto-hébergés de dépôt ou d’organisation à l’aide de l’API. Pour vous authentifier auprès de l’API, votre implémentation de mise à l’échelle automatique peut utiliser un jeton d’accès ou une application GitHub.

Votre jeton d’accès nécessite l’étendue suivante :

Pour vous authentifier à l’aide d’une application GitHub, elle doit être affectée des autorisations suivantes :

  • Pour les dépôts, attribuez l’autorisation administration.
  • Pour les organisations, attribuez l’autorisation organization_self_hosted_runners.

Vous pouvez inscrire et supprimer des exécuteurs auto-hébergés au niveau de la grande entreprise à l’aide de l’API. Pour vous authentifier auprès de l’API, votre implémentation de mise à l’échelle automatique peut utiliser un jeton d’accès.

Votre jeton d’accès nécessite l’étendue manage_runners:enterprise.