L’automatisation sur GitHub implique généralement plusieurs composants travaillant ensemble. Les composants natifs les plus importants de GitHub sont les suivants :
- **GitHub Actions workflows, **qui fournissent un environnement d’exécution pour exécuter la logique d’automatisation. Prêt à l'emploi, ils fonctionnent dans un référentiel unique, mais ils peuvent être étendus pour automatiser à travers ou même en dehors des référentiels.
- GitHub Apps, qui ne disposent pas d’un environnement d’exécution. Au lieu de cela, ils fournissent une identité, des autorisations et une remise d’événements afin que vos automatisations, qu’il s’agisse de services externes ou de flux de travail, peuvent s’authentifier et agir en toute sécurité.
La plupart des automatisations d'entreprise combinent l'utilisation de GitHub Apps et GitHub Actions. Par exemple, un flux de travail en cours d’exécution dans GitHub Actions peut utiliser un GitHub App pour obtenir un jeton de courte durée qui lui permet d’effectuer des tâches entre les référentiels ou les organisations.
Ce guide décrit la manière dont GitHub Apps, les automatisations externes et GitHub Actions interagissent et précise dans quels cas les utiliser au sein de votre organisation.
GitHub Apps
A GitHub App fournit les événements d’identité, d’autorisations et de webhook requis pour l’automatisation sur ou entre les référentiels, les organisations ou votre entreprise. Les GitHub Apps n’exécutent pas directement de logique, mais servent de mécanisme permettant à des systèmes tiers de le faire.
GitHub Apps prend en charge l’automatisation d’entreprise en offrant :
- Autorisations granulaires pour suivre les principes de privilège minimum
- Installations avec périmètre défini au niveau de l’entreprise, de l’organisation ou du référentiel
- Jetons de courte durée pour l’accès sécurisé
- Identités distinctes avec une auditabilité complète
- Administration déléguée via le rôle de gestionnaire GitHub App
- Cohérence à grande échelle lorsque gérée par le compte d'entreprise
Quel est le rôle des GitHub Apps ?
GitHub Apps permettent aux automatisations que vous écrivez ailleurs—telles que les services externes ou les étapes de flux de travail—d'agir sur les API de GitHub dans le cadre des autorisations que vous accordez. Par exemple:
- Réception d’événements de webhook et déclenchement de services externes
- Activation d’un flux de travail en dehors de son étendue de référentiel par défaut
- Intégration de GitHub avec des systèmes tiers
- Coordination des modifications dans de nombreux référentiels
- Exécution de bots ou de services de longue durée qui surveillent l’activité au niveau de l’entreprise
GitHub Actions
Les GitHub Actions fournissent l’environnement d’exécution natif de GitHub pour exécuter la logique d’automatisation au sein des référentiels. Les workflows s’exécutent sur des exécuteurs auto-hébergés et sont idéaux pour les tâches liées aux modifications de code ou aux événements de dépôt.
Utilisez GitHub Actions pour :
- CI/CD (construction, test, déploiement)
- Vérifications et validations des pull requests
- Tâches de maintenance au niveau du référentiel
- Flux de travail pilotés par les événements répondant aux pushs, balises ou mises à jour des tickets.
- Travaux planifiés avec cron
De quelle manière les GitHub Actions exploitent-ils les GitHub Apps ?
Les GitHub Actions et les GitHub Apps présentent une forte interdépendance :
- Les autorisations de flux de travail correspondent directement aux autorisations GitHub App.
- Les workflows peuvent s’authentifier en tant que GitHub App spécifique en utilisant
actions/create-github-app-token. - Les GitHub Apps peuvent déclencher des workflows par le biais d’événements tels que
repository_dispatch.
Automatisations et services externes
Les automatisations externes s’exécutent en dehors de GitHub sur votre propre infrastructure. Ces services sont généralement les suivants :
- Recevoir des événements de webhook à partir d’un GitHub App
- Utilisez l'application GitHub App pour demander des jetons d'installation à courte durée de vie
- Exécuter une logique de longue durée ou trans-entreprise
- Intégrer à des systèmes d’entreprise externes
Voici quelques exemples :
- Gestion de la configuration à l’échelle de l’organisation
- Services d’application de stratégie
- Code multi-référentiel ou synchronisation des métadonnées
- Génération du rapport de conformité
- Gestion des problèmes ou des demandes de tirage à l’échelle interorganisationnelle
Tous ces éléments s’appuient sur GitHub Apps pour l’authentification, l’identité et les événements, et non pour l’exécution.
Fonctionnement de ces composants
La plupart des automatisations d’entreprise utilisent une combinaison de GitHub Apps, des services externes et GitHub Actions pour obtenir des flux de travail robustes et évolutifs.
Par exemple:
- Une entreprise GitHub App reçoit un webhook lorsqu’un nouveau référentiel est créé et envoie la charge utile du webhook à un serveur sur lequel un service externe est en cours d’exécution.
- Le service externe normalise les paramètres requis et provisionne les ressources.
- Le service déclenche un flux de travail GitHub Actions dans le référentiel.
- Le flux de travail effectue l’intégration continue, déploie des modèles de déploiement ou configure le scannage.
Chaque composant gère une couche d’automatisation différente.
Quand utiliser chaque type d’automatisation
Utilisez **une GitHub App **lorsque les besoins suivants se présentent :
- Authentification ou autorisation d’agir sur de nombreux référentiels
- Intégration avec des systèmes externes
- Automatisations basées sur les webhooks
- Flux de travail à long terme ou à l’échelle de l’entreprise
- Auditabilité et séparation des identités
Utilisez des automatisations externes lorsque vous avez besoin des éléments suivants :
- Logique qui s’exécute en continu ou en dehors de GitHub
- Intégration avec des systèmes internes
Utilisez GitHub Actions lorsque vous avez besoin de :
- Pipelines CI/CD
- Automatisation à l'échelle du référentiel
- Vérifications automatisées liées aux événements de référentiel
- Exécution de la logique à l’aide de l’infrastructure d’exécution de GitHub
Utilisez GitHub Apps et GitHub Actions ensemble lorsque :
- Un flux de travail doit agir au-delà des autorisations par défaut du référentiel
- Un GitHub App doit déclencher un flux de travail
- Une logique externe pilote et orchestre l’exécution au sein du référentiel
- Les stratégies ou workflows à l’échelle de l’entreprise nécessitent à la fois l’identité et le runtime
Étapes suivantes
Découvrez comment concevoir et gérer GitHub Apps au niveau de l’entreprise dans Création d’applications GitHub pour votre entreprise.