Explorer les exécuteurs

Effectué

Les exécuteurs GitHub sont des ressources informatiques qui exécutent les flux de travail de GitHub Actions. Chaque exécuteur ne peut exécuter qu'un seul travail à la fois. Ils permettent aux développeurs d'effectuer des tâches de construction, de test et de déploiement directement à partir des dépôts GitHub. Il existe deux principaux types d’exécuteurs GitHub :

  • Les exécuteurs hébergés par GitHub sont des ressources informatiques virtualisées ou conteneurisées fournies et gérées par GitHub.
  • Les exécuteurs auto-hébergés sont des ressources informatiques physiques, virtualisées ou conteneurisées que les utilisateurs et les organisations de GitHub fournissent et gèrent eux-mêmes.

Chaque type présente des caractéristiques uniques, dispose d'un certain nombre de capacités distinctes et justifie plusieurs considérations différentes.

Il est important de noter que GitHub déconseille fortement l'utilisation d’exécuteurs auto-hébergés dans les dépôts publics. Cela présente un risque important pour la sécurité, car cela permet à n'importe qui d'exécuter du code dans l'environnement privé de l'organisation.

Exécuteurs hébergés par GitHub

Les exécuteurs hébergés par GitHub offrent une solution pratique pour exécuter des flux de travail dans le cadre de GitHub Actions, sans qu'il soit nécessaire d'administrer les composants matériels et logiciels sous-jacents. Ils sont conçus pour évoluer automatiquement en fonction de la demande, ce qui garantit des performances optimales pendant les périodes d'utilisation maximale. GitHub propose plusieurs environnements préconfigurés pour les exécuteurs hébergés par GitHub, couvrant différentes configurations logicielles et systèmes d'exploitation, notamment Ubuntu Linux, Microsoft Windows et macOS.

Les exécuteurs hébergés sur GitHub incluent les outils intégrés par défaut du système d'exploitation. Par exemple, les exécuteurs Ubuntu et macOS incluent grep, find et which. Pour identifier tous les autres outils préinstallés sur les exécuteurs, les utilisateurs peuvent consulter la nomenclature des logiciels (SBOM) pour chaque version des images des exécuteurs Windows et Ubuntu. Les utilisateurs peuvent également consulter la sous-section Runner Image de la section Set up job dans les journaux de flux de travail. Le lien qui suit l'entrée Logiciel inclus décrit tous les outils préinstallés sur l'exécution qui a exécuté le flux de travail. Il est également possible d'installer des logiciels supplémentaires sur les exécuteurs hébergés par GitHub en créant une tâche qui installe les paquets dans le cadre du flux de travail existant.

Les exécuteurs hébergés par GitHub s'exécutent sur l'infrastructure cloud de GitHub, en s'appuyant sur des machines virtuelles ou des conteneurs pour exécuter les workflows. Chaque exécution de flux de travail est isolée dans son propre environnement, ce qui garantit la sécurité et la reproductibilité. Les exécuteurs hébergés sur GitHub s'intègrent de manière transparente à GitHub Actions, ce qui permet aux utilisateurs de les référencer directement dans les flux de travail hébergés dans les référentiels GitHub.

Il existe certaines limites à l'utilisation de GitHub Actions lors de l'utilisation d’exécuteurs hébergés par GitHub. En particulier, chaque tâche d'un flux de travail a une durée d'exécution maximale de 6 heures. Si un travail atteint cette limite, il est arrêté et son exécution échoue. Chaque cycle de travail est limité à 35 jours. Si un flux de travail atteint cette limite, son exécution est annulée. Cette période comprend la durée d’exécution ainsi que le temps d’attente et d’approbation.

Prérequis

Avant de mettre en œuvre des exécuteurs hébergés par GitHub, les utilisateurs doivent disposer d'un dépôt GitHub dans lequel ils peuvent définir des flux de travail à l'aide de GitHub Actions. Les exécuteurs sont disponibles pour tous les utilisateurs de GitHub ayant accès à GitHub Actions.

Implémentation

Contrairement aux exécuteurs auto-hébergés, ceux hébergés par GitHub sont provisionnés automatiquement dans le cadre de l'exécution d'un flux de travail individuel. Les utilisateurs définissent les flux de travail sous la forme de fichiers au format YAML stockés dans le répertoire .github/workflows des dépôts GitHub. Dans la configuration du flux de travail, les utilisateurs spécifient l'environnement de l’exécuteur souhaité, y compris le système d'exploitation et les dépendances logicielles. Les exécuteurs dont les spécifications correspondent sont mis en place à la demande chaque fois que le flux de travail est déclenché, à raison d'un exécuteur par travail. Les déclencheurs peuvent être manuels ou automatiques, sur la base d'événements tels que les poussées de code, les demandes de tirage ou les événements d'envoi de référentiel.
Les exécuteurs hébergés par GitHub s'authentifient auprès de GitHub en utilisant des jetons ou des informations d'identification fournis par GitHub Actions. Ils s'appuient sur la connectivité intégrée pour communiquer avec la plateforme GitHub et pour télécharger les artefacts du flux de travail.

Maintainance

GitHub gère les mises à jour et la maintenance des exécuteurs hébergés par GitHub, en veillant à ce qu'ils restent à jour avec les dernières versions logicielles et les correctifs de sécurité. Les outils logiciels inclus dans les exécuteurs sont mis à jour chaque semaine. Les activités des exécuteurs sont contrôlées et enregistrées, ce qui facilite le suivi de l'exécution du flux de travail et le dépannage.

Gestion des licences et coût

Les exécuteurs hébergés par GitHub sont inclus dans la tarification de GitHub Actions, avec une facturation basée sur l'utilisation pour les minutes de workflow au-delà du niveau gratuit. Les utilisateurs bénéficient d'une mise à l'échelle automatisée et rentable, car GitHub provisionne et désalloue automatiquement les exécuteurs en fonction de la demande.

Exécuteurs auto-hébergés

Par rapport aux exécuteurs hébergés sur GitHub, les exécuteurs auto-hébergés offrent davantage de contrôle et d'options de personnalisation, avec des environnements d'exécution capables de répondre à un plus large éventail d'exigences. Ils peuvent être déployés sur site ou dans le nuage, en fonction de critères tels que la connectivité du réseau, le coût et la disponibilité des ressources.

Les exécuteurs auto-hébergés sont provisionnés et gérés par les utilisateurs, ce qui leur donne un contrôle total sur l'environnement d'exécution. Ils sont entièrement personnalisables, y compris les spécifications matérielles, les configurations logicielles et les paramètres du réseau. Ils facilitent également l'intégration avec l'infrastructure et l'outillage existants, minimisant ainsi les risques de problèmes de compatibilité et d'interopérabilité.

Contrairement aux exécuteurs hébergés sur GitHub, il n'y a pas de limite de temps pour l'exécution des tâches individuelles et des flux de travail.

Prérequis

Les utilisateurs doivent mettre en place et configurer les exécuteurs auto-hébergés sur l'infrastructure de leur choix, y compris l'installation du logiciel de l’exécuteur et de toutes les dépendances logicielles supplémentaires. Le code source des exécuteurs auto-hébergés est disponible en tant que projet open source sur GitHub à l’adresse https://github.com/actions/runner. Chaque exécuteur auto-hébergé agit comme un agent qui communique avec GitHub Actions pour exécuter les workflows.

Les exécuteurs auto-hébergés nécessitent une connectivité réseau sortante, des identifiants d'authentification et une autorisation pour accéder à la plateforme GitHub et télécharger des artefacts de flux de travail. Selon l'emplacement des exécuteurs, il peut être nécessaire de configurer des règles de pare-feu pour répondre à ces exigences.

Implémentation

Comme pour les exécuteurs hébergés par GitHub, la mise en œuvre consiste à définir des flux de travail au format YAML et à les stocker dans le répertoire .github/workflows dans les dépôts GitHub. Toutefois, pour que les flux de travail puissent utiliser les exécuteurs auto-hébergés, les utilisateurs doivent d'abord les enregistrer, en fournissant les jetons d'authentification ou les informations d'identification nécessaires. Dans le cadre de l'enregistrement, les utilisateurs spécifient des caractéristiques telles que le nom de l'exécuteur, les étiquettes et les paramètres de l'environnement d'exécution.

L'enregistrement peut avoir lieu à différents niveaux au sein d'une entreprise :

  • Au niveau du dépôt (dépôt unique)
  • Au niveau de l’organisation (plusieurs dépôts dans une organisation)
  • Au niveau de l’entreprise (plusieurs organisations dans une entreprise)

Maintainance

Les utilisateurs sont responsables de la mise à jour et de la maintenance des exécuteurs auto-hébergés, y compris de l'installation des mises à jour logicielles et des correctifs de sécurité. La maintenance consiste également à contrôler l'état de santé et les performances de l’exécuteur, ainsi qu'à résoudre les problèmes qui surviennent au cours de l'exécution de l’exécuteur.

Gestion des licences et coût

Les exécuteurs auto-hébergés n'ont pas à payer de frais de licence supplémentaires au-delà de la tarification de GitHub Actions et des coûts d'infrastructure associés, y compris l'informatique, le stockage et le réseau. L'optimisation de l'allocation et de l'utilisation des ressources devient la responsabilité de l'utilisateur.