Skip to main content

À propos des exécuteurs auto-hébergés

Vous pouvez héberger vos propres exécuteurs et personnaliser l'environnement utilisé pour exécuter les travaux dans vos workflows GitHub Actions.

À 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 GitHub.com. Pour plus d'informations sur GitHub Actions, consultez « Comprendre GitHub Actions. »

Les exécuteurs auto-hébergés offrent plus de contrôle sur le matériel, le système d’exploitation et les outils logiciels que les exécuteurs hébergés par GitHub. 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 non proposé par les exécuteurs hébergés par GitHub. 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 à 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.

Un exécuteur auto-hébergé est automatiquement supprimé de GitHub 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 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.

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 ».
  • 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 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 8 ou version ultérieure
  • CentOS 8 ou version ultérieure
  • Oracle Linux 8 ou version ultérieure
  • Fedora 29 ou version ultérieure
  • Debian 10 ou version ultérieure
  • Ubuntu 20.04 ou version ultérieure
  • Linux Mint 20 ou version ultérieure
  • openSUSE 15.2 ou version ultérieure
  • SUSE Enterprise Linux (SLES) 15 SP2 ou version ultérieure

Windows

  • 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, Windows (actuellement en version bêta).
  • ARM32 - Linux.

Communication entre les exécuteurs auto-hébergés et GitHub

Les exécuteurs auto-hébergés se connectent à GitHub 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 HTTPS qui ouvre une connexion à GitHub 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.

Étant donné que l'exécuteur auto-hébergé ouvre une connexion à GitHub.com, vous n'avez pas besoin d'autoriser GitHub à établir des connexions entrantes à votre exécuteur auto-hébergé.

Vous devez vous assurer que l'ordinateur dispose d'un accès réseau approprié avec une vitesse de téléchargement d'au moins 70 kilobits par seconde pour communiquer avec les hôtes GitHub énumérés ci-dessous. Certains hôtes sont requis pour les opérations d'exécuteur essentielles, tandis que d'autres hôtes ne sont requis que pour certaines fonctionnalités.

Utilisez l’API REST pour obtenir les métadonnées sur GitHub, notamment les adresses IP des services GitHub. Pour plus d’informations sur les domaines et adresses IP utilisés, consultez « Points de terminaison d’API REST pour les métadonnées ».

Remarque : certains des domaines répertoriés ci-dessous 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-dessous resteront constants.

Requis pour les opérations essentielles :

Shell
github.com
api.github.com
*.actions.githubusercontent.com

Requis pour télécharger les actions :

Shell
codeload.github.com

Requis pour charger/télécharger des résumés de projets, des journaux d'activité, des artefacts de workflow et des caches :

Shell
results-receiver.actions.githubusercontent.com
*.blob.core.windows.net

Requis pour les mises à jour de la version de l'exécuteur :

Shell
objects.githubusercontent.com
objects-origin.githubusercontent.com
github-releases.githubusercontent.com
github-registry-files.githubusercontent.com

Requis pour récupérer les jetons OIDC :

Shell
*.actions.githubusercontent.com

Nécessaire pour le téléchargement ou la publication de packages ou de conteneurs dans les packages GitHub :

Shell
*.pkg.github.com
ghcr.io

Nécessaire pour Stockage Fichiers volumineux Git

Shell
github-cloud.githubusercontent.com
github-cloud.s3.amazonaws.com

En outre, votre workflow peut nécessiter l'accès à d'autres ressources réseau.

Si vous utilisez une liste verte d'adresses IP pour votre compte d'organisation ou d'entreprise GitHub, vous devez ajouter l'adresse IP de votre exécuteur auto-hébergé à cette liste verte. Pour plus d'informations, consultez « Gestion des adresses IP autorisées pour votre organisation » ou « Application de stratégies pour les paramètres de sécurité dans votre entreprise » dans la documentation GitHub Enterprise Cloud.

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 ».

Sécurité des exécuteurs auto-hébergés

Nous vous recommandons d’utiliser uniquement des exécuteurs auto-hébergés avec des dépôts privés. En effet, les duplications (forks) de votre dépôt public peuvent exécuter du code potentiellement dangereux sur la machine de votre exécuteur auto-hébergé en créant une demande de tirage qui exécute le code dans un workflow.

Cela ne pose pas de problème avec les exécuteurs hébergés par GitHub, car chaque exécuteur hébergé par GitHub est toujours une machine virtuelle isolée propre, et parce qu'il est détruit à la fin de l'exécution du travail.

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 ».

Restriction de l'utilisation des exécuteurs auto-hébergés

Les propriétaires d’organisation peuvent choisir les référentiels autorisés à créer des exécuteurs auto-hébergés au niveau du référentiel. .

Pour plus d’informations, consultez « Désactivation ou limitation de la fonctionnalité GitHub Actions pour votre organisation ».