1. Prérequis : authentification et permissions
Avant de configurer votre workflow, vérifiez que vous disposez des accès nécessaires pour chaque service. Les méthodes d'authentification et les permissions diffèrent selon que vous utilisez GitHub ou Docker Hub.
1.1 GitHub : jeton d'accès personnel (PAT) ou OAuth2
n8n supporte deux méthodes pour s'authentifier auprès de GitHub :
- Jeton d'accès personnel (PAT) : compatible avec tous les nœuds GitHub, y compris le GitHub Document Loader (qui ne supporte pas OAuth2). Source.
- OAuth2 : réservé aux nœuds GitHub et GitHub Trigger. Source.
Pour générer un PAT :
- Allez dans Settings > Developer settings > Personal access tokens > Tokens (classic) sur GitHub.
- Sélectionnez les scopes nécessaires :
repopour accéder aux dépôts privés et aux événements comme les pushs ou les releases.admin:repo_hookuniquement si vous utilisez l'API GitHub pour créer/modifier des webhooks (par exemple, via le nœud *HTTP Request*). Pour les nœuds n8n natifs (*GitHub Trigger*, *GitHub*), le scopereposuffit. Source.read:orgpour les événements liés aux organisations.- Choisissez une expiration (ou No expiration pour un usage automatisé, mais avec un risque de sécurité accru).
- Copiez le jeton généré et stockez-le dans n8n sous Credentials > GitHub API.
Important : Un PAT sans scope ne peut accéder qu'aux informations publiques. Pour les dépôts privés, le scope repo est obligatoire.
1.2 Docker Hub : permissions pour les webhooks
Docker Hub ne propose pas de nœud dédié dans n8n. Pour recevoir des alertes, vous devez configurer un webhook Docker Hub qui envoie des requêtes POST à un endpoint n8n. Source.
Prérequis :
- Être propriétaire du dépôt (pour les dépôts personnels) ou avoir des permissions d'administration (pour les dépôts d'organisation). Pour les dépôts privés, les mêmes règles s'appliquent. Source.
- Disposer d'une URL publique pour votre endpoint n8n (par exemple, via un tunnel comme ngrok pour une instance auto-hébergée).
2. Configurer les déclencheurs GitHub dans n8n
Le nœud GitHub Trigger permet de réagir à des événements spécifiques sur GitHub, comme les pushs, les releases, ou les alertes de vulnérabilités. Voici comment le configurer.
2.1 Événements supportés par le nœud *GitHub Trigger*
Le nœud supporte une vingtaine d'événements, dont :
Push: déclenché lorsqu'un commit est poussé sur une branche.Release: déclenché lorsqu'une release est publiée, modifiée, ou supprimée.Repository vulnerability alert: déclenché lorsqu'une vulnérabilité est détectée dans un dépôt. Source.Pull request: déclenché lorsqu'une pull request est ouverte, modifiée, ou fermée.
Réserve : La liste complète des événements supportés est disponible dans la documentation n8n, mais certains événements avancés (ex: *check runs*) peuvent nécessiter l'utilisation du nœud *HTTP Request*.
2.2 Exemple de configuration
Pour configurer le nœud :
- Ajoutez un nœud GitHub Trigger à votre workflow n8n.
- Sélectionnez l'événement souhaité (par exemple,
Release). - Choisissez le dépôt cible (ou laissez vide pour surveiller tous les dépôts accessibles avec votre PAT).
- Configurez les options avancées si nécessaire :
- Branch : filtrez les événements pour une branche spécifique.
- Ignore draft releases : excluez les releases en brouillon.
Limite : Le nœud GitHub Trigger ne supporte pas tous les événements disponibles via l'API GitHub. Par exemple, les événements liés aux check runs ou aux deployments ne sont pas listés dans la documentation n8n. Source.
2.3 Utiliser le nœud *HTTP Request* pour les webhooks GitHub
Si vous préférez utiliser des webhooks GitHub (par exemple, pour réduire la latence ou utiliser des événements non supportés par le nœud GitHub Trigger), vous pouvez configurer un webhook GitHub qui envoie des requêtes POST à un endpoint n8n. Voici les étapes :
- Dans votre dépôt GitHub, allez dans Settings > Webhooks > Add webhook.
- Configurez l'URL de votre endpoint n8n (par exemple,
https://votre-instance-n8n.cloud/webhook/github). - Sélectionnez les événements à surveiller (par exemple,
ReleasesouPushes). - Ajoutez un secret pour sécuriser les requêtes (optionnel mais recommandé).
- Dans n8n, utilisez un nœud Webhook pour recevoir les requêtes POST et un nœud HTTP Request pour valider le secret (si utilisé).
Note : GitHub recommande d'utiliser un secret pour les webhooks afin de vérifier l'authenticité des requêtes. Source.
3. Configurer les webhooks Docker Hub pour n8n
Contrairement à GitHub, Docker Hub ne propose pas de nœud dédié dans n8n. Pour recevoir des alertes, vous devez configurer un webhook Docker Hub qui envoie des requêtes POST à un endpoint n8n. Voici comment procéder.
3.1 Prérequis pour les webhooks Docker Hub
Pour créer un webhook Docker Hub :
- Vous devez être propriétaire du dépôt (pour les dépôts personnels) ou avoir des permissions d'administration (pour les dépôts d'organisation). Source.
- Votre endpoint n8n doit être accessible publiquement (par exemple, via un tunnel comme ngrok).
3.2 Étapes de configuration
- Dans votre dépôt Docker Hub, allez dans Webhooks > Create Webhook.
- Donnez un nom à votre webhook (par exemple,
n8n-alerts). - Configurez l'URL de votre endpoint n8n (par exemple,
https://votre-instance-n8n.cloud/webhook/docker-hub). - Sélectionnez les événements à surveiller (par défaut, le webhook est déclenché pour tous les pushs).
- Cliquez sur Create pour activer le webhook.
3.3 Structure du payload Docker Hub
Lorsqu'un événement se produit (par exemple, un push de tag), Docker Hub envoie une requête POST à votre endpoint n8n avec un payload JSON contenant des métadonnées comme :
push_data.pusher: le nom de l'utilisateur qui a poussé le tag.push_data.tag: le tag poussé (par exemple,latestouv1.0.0).repository.repo_name: le nom du dépôt.repository.repo_url: l'URL du dépôt. Source.
Exemple de payload :
{
"push_data": {
"pushed_at": 1417566161,
"pusher": "trustedbuilder",
"tag": "latest"
},
"repository": {
"repo_name": "svendowideit/testhook",
"repo_url": "https://hub.docker.com/r/svendowideit/testhook"
}
}
3.4 Recevoir et traiter les webhooks dans n8n
Pour recevoir les webhooks Docker Hub dans n8n :
- Ajoutez un nœud Webhook à votre workflow et configurez-le pour écouter les requêtes POST sur l'URL que vous avez fournie à Docker Hub.
- Utilisez un nœud Set ou Function pour extraire les données du payload (par exemple, le tag ou le nom du dépôt).
- Ajoutez une logique pour prioriser les alertes (par exemple, ignorer les tags comme
devoutest).
Limite : Docker Hub ne permet aucun filtrage au niveau du webhook (ni par tag, ni par branche). Tout le filtrage doit être géré dans n8n (ex: via un nœud *IF*). Source.
4. Construire un workflow complet pour centraliser les alertes
Voici un exemple de workflow n8n qui combine les alertes GitHub et Docker Hub, les priorise, et les envoie vers Slack ou Teams.
4.1 Étapes du workflow
- Déclencheurs :
- Un nœud GitHub Trigger pour les événements GitHub (par exemple,
ReleaseouRepository vulnerability alert). - Un nœud Webhook pour recevoir les webhooks Docker Hub.
- Traitement des données :
- Un nœud Function pour normaliser les données (par exemple, extraire le nom du dépôt, le tag, ou le type d'événement).
- Un nœud IF pour prioriser les alertes (par exemple, envoyer une notification immédiate pour les vulnérabilités ou les releases majeures).
- Envoi des notifications :
- Un nœud Slack ou Microsoft Teams pour envoyer les alertes prioritaires.
- Un nœud Email pour les alertes moins urgentes (optionnel).
4.2 Exemple de logique de priorisation
Voici un exemple de code JavaScript pour un nœud Function qui priorise les alertes :
// Normaliser les données GitHub et Docker Hub
let normalizedData = {};
if ($input.all()[0].json.repository) { // Payload Docker Hub
normalizedData = {
source: "Docker Hub",
repo: $input.all()[0].json.repository.repo_name,
tag: $input.all()[0].json.push_data.tag,
pusher: $input.all()[0].json.push_data.pusher,
priority: $input.all()[0].json.push_data.tag.includes("latest") ? "high" : "low"
};
} else if ($input.all()[0].json.action) { // Payload GitHub
normalizedData = {
source: "GitHub",
repo: $input.all()[0].json.repository.full_name,
event: $input.all()[0].json.action,
priority: $input.all()[0].json.action === "published" ? "high" : "low"
};
}
// Retourner les données normalisées
return [normalizedData];
4.3 Optimisation du workflow
Pour réduire les coûts et améliorer l'efficacité :
- Filtrez les événements peu pertinents (par exemple, ignorer les tags
devoutest). - Utilisez un nœud Debounce pour regrouper les alertes similaires (par exemple, plusieurs pushs sur la même branche).
- Limitez la fréquence des notifications (par exemple, envoyer un résumé quotidien au lieu d'une alerte par événement).
5. Limites et points d'attention
Bien que n8n soit un outil puissant pour automatiser la veille DevOps, certaines limites techniques et organisationnelles doivent être anticipées.
5.1 Permissions et accès
- GitHub : Les scopes de votre PAT déterminent les actions possibles. Par exemple, sans le scope
repo, vous ne pourrez pas accéder aux dépôts privés. Source. - Docker Hub : Seuls les propriétaires de dépôts ou les administrateurs d'organisations peuvent créer des webhooks. Source.
5.2 Gestion des échecs de livraison
Les webhooks (GitHub ou Docker Hub) peuvent échouer pour plusieurs raisons :
- L'endpoint n8n est indisponible (par exemple, en cas de maintenance ou de problème réseau).
- Le payload dépasse la taille maximale autorisée par n8n (par défaut, 16 Mo pour les requêtes entrantes).
- Le secret ou le jeton d'authentification est invalide ou expiré.
Solution :
- Utilisez un nœud Error Trigger dans n8n pour capturer les échecs et envoyer une alerte (par exemple, via Slack).
- Configurez des redélivrances automatiques pour les webhooks GitHub (via un script). Source.
5.3 Maintenance et évolutivité
- Jeton expirés : Si vous utilisez un PAT GitHub avec une date d'expiration, prévoyez un processus pour le renouveler et le mettre à jour dans n8n.
- Changements d'API : GitHub et Docker Hub peuvent modifier leurs API ou leurs payloads de webhooks. Testez régulièrement votre workflow pour détecter les ruptures.
- Scalabilité : Si vous surveillez des centaines de dépôts, envisagez de regrouper les alertes ou d'utiliser des tags pour filtrer les événements pertinents.
6. Ressources utiles
- Notre expertise sur les outils d'automatisation (Make, Zapier, n8n).
- Comparaison détaillée de n8n avec Make et Zapier.
- 10 exemples de workflows pour optimiser vos opérations.