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 des exécuteurs auto-hébergés
Un exécuteur auto-hébergé est un système que vous déployez et gérez pour exécuter des travaux à partir de GitHub Actions sur votre instance GitHub Enterprise Server. Pour plus d'informations sur GitHub Actions, consultez « Comprendre GitHub Actions et « À propos de GitHub Actions pour les entreprises ».
Les exécuteurs auto-hébergés vous permettent de créer des configurations matérielles personnalisées qui répondent à vos besoins en termes de puissance de traitement ou de mémoire pour exécuter des travaux plus volumineux, installer des logiciels disponibles sur votre réseau local et choisir un système d’exploitation. Les exécuteurs auto-hébergés peuvent être physiques ou virtuels, et se trouver dans un conteneur, localement ou dans un cloud.
Vous pouvez ajouter des exécuteurs auto-hébergés à différents niveaux dans la hiérarchie de gestion :
- Les exécuteurs au niveau du dépôt sont dédiés à un seul dépôt.
- Les exécuteurs au niveau de l'organisation peuvent traiter des travaux pour plusieurs dépôts d'une organisation.
- Les exécuteurs au niveau de l'entreprise peuvent être affectés à plusieurs organisations dans un compte d'entreprise.
Votre machine d’exécuteur se connecte à GitHub Enterprise Server à l’aide de l’application d’exécuteur autohébergé de GitHub Actions. 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. Lorsqu'une nouvelle version est publiée, l'application de l'exécuteur est mise à jour automatiquement lorsqu'un travail est affecté à l'exécuteur, ou dans un délai d'une semaine après publication si aucun travail n'est affecté à l'exécuteur.
Remarque : Si vous utilisez des exécuteurs éphémères et que vous avez désactivé les mises à jour automatiques, avant de mettre à niveau votre instance GitHub Enterprise Server, vous devez mettre à niveau vos exécuteurs auto-hébergés vers la version de l’application de l’exécuteur que votre instance mise à niveau exécutera. La mise à niveau de votre instance GitHub Enterprise Server avant de mettre à niveau les exécuteurs éphémères peut entraîner le passage hors connexion de vos exécuteurs. Pour plus d’informations, consultez « Mise à niveau de GitHub Enterprise Server ».
Un exécuteur auto-hébergé est automatiquement supprimé de GitHub Enterprise Server s’il ne s’est pas connecté à GitHub Actions depuis plus de 14 jours. Un exécuteur auto-hébergé éphémère est automatiquement supprimé de GitHub Enterprise Server s’il n’a pas été connecté à GitHub Actions depuis plus de 1 jour.
Pour plus d'informations sur l'installation et l'utilisation d'exécuteurs auto-hébergés, consultez « Ajout d’exécuteurs auto-hébergés » et « Utilisation d’exécuteurs auto-hébergés dans un workflow ».
Différences entre les exécuteurs hébergés par GitHub et les exécuteurs auto-hébergés
Les exécuteurs hébergés par GitHub offrent un moyen plus rapide et plus simple d’exécuter vos workflows, tandis que les exécuteurs auto-hébergés sont un moyen hautement configurable pour exécuter des workflows dans votre propre environnement personnalisé.
Exécuteurs hébergés dans GitHub :
- Recevez les mises à jour automatiques pour le système d'exploitation, les packages et les outils préinstallés et l'application de l'exécuteur auto-hébergé.
- Sont gérés et tenus à jour par GitHub.
- Fournissez une instance claire pour chaque exécution de travail.
- Utilisent des minutes gratuites sur votre plan GitHub, avec des tarifs à la minute appliqués après dépassement des minutes gratuites.
Exécuteurs autohébergés :
- Reçoivent des mises à jour automatiques pour l'application d'exécuteur auto-hébergée seulement, bien que vous puissiez désactiver les mises à jour automatiques de l'exécuteur. Pour plus d'informations sur le contrôle des mises à jour de logiciel de l'exécuteur sur les exécuteurs auto-hébergés, consultez « Mise à l’échelle automatique avec des exécuteurs auto-hébergés ». Vous êtes responsable de la mise à jour du système d'exploitation et de tous les autres logiciels.
- Peut utiliser des services cloud ou des ordinateurs locaux que vous payez déjà.
- Sont personnalisables en termes de matériel, de système d'exploitation, de logiciel et de sécurité.
- Il n'est pas nécessaire d'avoir une instance claire pour chaque exécution de travail.
- Peuvent être utilisés gratuitement avec GitHub Actions, mais vous êtes responsable du coût de maintenance de vos machines d'exécuteur.
- Peuvent être organisés en groupes pour restreindre l'accès à des workflows, organisations et dépôts spécifiques. Pour plus d'informations, consultez « Gestion de l’accès aux exécuteurs auto-hébergés à l’aide de groupes ».
Configuration requise pour les machines d'exécuteur auto-hébergé
Vous pouvez utiliser n'importe quelle machine en tant qu'exécuteur auto-hébergé tant qu'elle répond aux exigences suivantes :
- Vous pouvez installer et exécuter l'application d'exécuteur auto-hébergée sur la machine. Pour plus d'informations, consultez « Architectures et systèmes d'exploitation pris en charge pour les exécuteurs auto-hébergés ».
- La machine peut communiquer avec GitHub Actions. Pour plus d'informations, consultez « Communication entre les exécuteurs auto-hébergés et GitHub Enterprise Server ».
- La machine dispose de suffisamment de ressources matérielles pour le type de workflows que vous envisagez d'exécuter. L'application d'exécuteur auto-hébergé elle-même nécessite uniquement des ressources minimales.
- Si vous souhaitez exécuter des workflows qui utilisent des actions de conteneur Docker ou des conteneurs de service, vous devez utiliser une machine Linux et Docker doit être installé.
Mise à l'échelle automatique de vos exécuteurs auto-hébergés
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. Pour plus d'informations, consultez « Mise à l’échelle automatique avec des exécuteurs auto-hébergés ».
Limites d'utilisation
Il existe des limites sur l'utilisation de GitHub Actions lors de l'utilisation d'exécuteurs auto-hébergés. Ces limites sont susceptibles d'être modifiées.
- Durée d’exécution du workflow - Chaque exécution de workflow est limitée à 35 jours. Si une exécution de workflow atteint cette limite, l’exécution du workflow est annulée. Cette période comprend la durée d’exécution ainsi que le temps d’attente et d’approbation.
- Temps d'attente des travaux : chaque travail pour les exécuteurs auto-hébergés mis en file d'attente pendant au moins 24 heures sera annulé. L'heure réelle dans la file d'attente peut atteindre jusqu'à 48 heures avant l'annulation. Si un exécuteur auto-hébergé ne démarre pas l'exécution du travail dans cette limite, le travail est arrêté et n'aboutit pas.
- Requêtes d’API - Vous pouvez exécuter jusqu’à 1 000 requêtes sur l’API GitHub en une heure pour toutes les actions d’un référentiel. Si le nombre de requêtes dépasse cette limite, les appels d’API supplémentaires échouent, ce qui peut entraîner l’échec des travaux.
- Matrice de travaux : Une matrice de travaux peut générer au maximum 256 travaux par exécution de workflow. Cette limite s’applique aux exécuteurs hébergés sur GitHub Enterprise Server et à ceux qui sont autohébergés.
- File d’attente d’exécution de workflow : Plus de 500 exécutions de workflow peuvent être mises en file d’attente toutes les 10 secondes par dépôt. Si une exécution de workflow atteint cette limite, elle est arrêtée et échoue.
- Inscription d'exécuteurs auto-hébergés : vous pouvez avoir un maximum de 10 000 exécuteurs auto-hébergés dans un groupe d'exécuteurs. Si cette limite est atteinte, l'ajout d'un nouvel exécuteur n'est pas possible.
Continuité des workflows pour les exécuteurs auto-hébergés
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.
Architectures et systèmes d'exploitation pris en charge pour les exécuteurs auto-hébergés
Les systèmes d'exploitation suivants sont pris en charge pour l'application d'exécuteur auto-hébergé.
Linux
- Red Hat Enterprise Linux 7 ou version ultérieure
- CentOS 7 ou version ultérieure
- Oracle Linux 7 ou version ultérieure
- Fedora 29 ou version ultérieure
- Debian 9 ou version ultérieure
- Ubuntu 16.04 ou version ultérieure
- Linux Mint 18 ou version ultérieure
- openSUSE 15 ou version ultérieure
- SUSE Enterprise Linux (SLES) 12 SP2 ou version ultérieure
Windows
- Windows 7 64 bits
- Windows 8.1 64 bits
- Windows 10 64 bits
- Windows 11 64 bits
- Windows Server 2016 64 bits
- Windows Server 2019 64 bits
- Windows Server 2022 64 bits
macOS
- macOS 11.0 (Big Sur) ou version ultérieure
Architectures
Les architectures de processeur suivantes sont prises en charge pour l'application d'exécuteur auto-hébergé.
x64
– Linux, macOS, Windows.ARM64
- Linux, macOS.ARM32
- Linux.
Actions prises en charge sur les exécuteurs auto-hébergés
Une configuration supplémentaire peut être nécessaire pour utiliser des actions à partir de GitHub.com avec GitHub Enterprise Server, ou pour utiliser les actions actions/setup-LANGUAGE
avec des exécuteurs auto-hébergés qui n'ont pas accès à Internet. Pour plus d'informations, consultez « Gestion de l’accès aux actions de GitHub.com » et contactez votre administrateur de site GitHub Enterprise.
Communication entre les exécuteurs auto-hébergés et GitHub Enterprise Server
Les exécuteurs auto-hébergés se connectent à GitHub Enterprise Server pour recevoir les affectations de travaux et pour télécharger les nouvelles versions de l'application d'exécuteur. L'exécuteur auto-hébergé utilise une interrogation longue HTTP(S) qui ouvre une connexion à GitHub Enterprise Server pendant 50 secondes, et si aucune réponse n'est reçue, il expire et crée une nouvelle interrogation longue. L'application doit s'exécuter sur la machine pour accepter et exécuter des travaux GitHub Actions.
La connexion entre exécuteurs auto-hébergés et GitHub Enterprise Server passe via HTTP (port 80) ou HTTPS (port 443). Pour garantir la connectivité via HTTPS, configurez le protocole TLS pour votre instance GitHub Enterprise Server. Pour plus d’informations, consultez « Configuration de TLS ».
Seule une connexion sortante de l’exécuteur vers votre instance GitHub Enterprise Server est requise. Il n'est pas nécessaire d'établir une connexion entrante de votre instance GitHub Enterprise Server vers l'exécuteur. Pour que la mise en cache fonctionne, l'exécuteur doit être en mesure de communiquer avec le stockage blob et de télécharger directement le contenu à partir de celui-ci.
GitHub Enterprise Server doit accepter les connexions entrantes de vos exécuteurs via HTTP(S) au sous-domaine de l'API et au nom d'hôte de votre instance GitHub Enterprise Server, et vos exécuteurs doivent autoriser les connexions sortantes via HTTP(S) au sous-domaine de l'API et au nom d'hôte de votre instance GitHub Enterprise Server.
Les exécuteurs auto-hébergés ne nécessitent pas d'accès Internet externe pour fonctionner. Par conséquent, vous pouvez utiliser le routage réseau pour diriger la communication entre l'exécuteur auto-hébergé et votre instance GitHub Enterprise Server. Par exemple, vous pouvez attribuer une adresse IP privée à votre exécuteur auto-hébergé et configurer le routage pour envoyer le trafic à votre instance GitHub Enterprise Server, sans avoir besoin que le trafic traverse un réseau public.
Vous pouvez également utiliser des exécuteurs auto-hébergés avec un serveur proxy. Pour plus d'informations, consultez « Utilisation d’un serveur proxy avec des exécuteurs auto-hébergés ».
Pour plus d'informations sur la résolution des problèmes courants de connectivité réseau, consultez « Surveillance des exécuteurs auto-hébergés et résolution des problèmes ».
Communication entre les exécuteurs auto-hébergés et GitHub.com
Les exécuteurs auto-hébergés n'ont pas besoin de se connecter à GitHub.com, à moins que vous ayez activé l'accès automatique aux actions GitHub.com pour votre instance GitHub Enterprise Server. Pour plus d'informations, consultez « À propos de l’utilisation d’actions dans votre entreprise ».
Si vous avez activé l'accès automatique aux actions GitHub.com, l'exécuteur auto-hébergé se connecte directement à GitHub.com pour télécharger les actions. Vous devez vous assurer que la machine dispose de l'accès réseau approprié pour communiquer avec les URL GitHub listées ci-dessous.
github.com api.github.com codeload.github.com
github.com
api.github.com
codeload.github.com
Remarque : certains des domaines listés ci-dessus sont configurés à l'aide d'enregistrements CNAME
. Certains pare-feu peuvent nécessiter l'ajout de règles récursives pour tous les enregistrements CNAME
. Notez que les enregistrements CNAME
peuvent changer à l'avenir et que seuls les domaines listés ci-dessus resteront constants.
Sécurité des exécuteurs auto-hébergés
Les workflows non approuvés qui s'exécutent sur votre exécuteur auto-hébergé présentent des risques de sécurité importants pour votre machine et votre environnement réseau, en particulier si votre machine conserve son environnement entre les travaux. Voici certains des risques encourus :
- Programmes malveillants s'exécutant sur la machine.
- Échappement du bac à sable de l'exécuteur de la machine.
- Exposition de l'accès à l'environnement réseau de la machine.
- Persistance de données indésirables ou dangereuses sur la machine.
Pour plus d'informations sur le renforcement de la sécurité pour les exécuteurs autohébergés, consultez « Durcissement de la sécurité pour GitHub Actions ».