# Discord Notifications pour CI/CD Ce document explique comment configurer les notifications Discord pour recevoir des alertes lors des builds CI/CD. ## Configuration Discord ### 1. Créer un Webhook Discord 1. Ouvrez Discord et allez dans le serveur où vous voulez recevoir les notifications 2. Cliquez sur les paramètres du canal (roue dentée à côté du nom du canal) 3. Allez dans **Intégrations** → **Webhooks** 4. Cliquez sur **Nouveau Webhook** 5. Donnez-lui un nom (ex: "Xpeditis CI/CD") 6. Choisissez le canal de destination 7. **Copiez l'URL du Webhook** (elle ressemble à `https://discord.com/api/webhooks/...`) ### 2. Configurer le Secret dans Gitea 1. Allez dans votre repository Gitea : `https://gitea.ops.xpeditis.com/David/xpeditis2.0` 2. Cliquez sur **Settings** (Paramètres) 3. Dans le menu latéral, cliquez sur **Secrets** 4. Cliquez sur **Add Secret** (Ajouter un secret) 5. Remplissez : - **Name** : `DISCORD_WEBHOOK_URL` - **Value** : Collez l'URL du webhook Discord copiée précédemment 6. Cliquez sur **Add Secret** ### 3. Tester la Configuration Pour tester que tout fonctionne : 1. Faites un commit et push sur la branche `preprod` 2. La CI/CD va se déclencher automatiquement 3. Vous devriez recevoir une notification Discord : - ✅ **Embed vert** si le build réussit - ❌ **Embed rouge** si le build échoue ## Format des Notifications ### Notification de Succès (Vert) ``` ✅ CI/CD Pipeline Success Deployment completed successfully! Repository: David/xpeditis2.0 Branch: preprod Commit: [abc1234...] (lien cliquable) Backend Image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod Frontend Image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod Workflow: [CI/CD Pipeline] (lien vers les logs) ``` ### Notification d'Échec (Rouge) ``` ❌ CI/CD Pipeline Failed Deployment failed! Check the logs for details. Repository: David/xpeditis2.0 Branch: preprod Commit: [abc1234...] (lien cliquable) Workflow: [CI/CD Pipeline] (lien vers les logs) ``` ## Informations Incluses Chaque notification contient : - **Repository** : Nom du dépôt Git - **Branch** : Branche où le build a été déclenché - **Commit** : SHA du commit avec lien vers le commit sur Gitea - **Backend/Frontend Images** : Noms complets des images Docker (succès uniquement) - **Workflow** : Lien direct vers les logs de la CI/CD pour débugger ## Personnalisation Pour personnaliser les notifications, éditez le fichier `.github/workflows/ci.yml` : ### Changer la couleur des embeds ```yaml # Succès (vert) "color": 3066993 # Échec (rouge) "color": 15158332 # Autres couleurs disponibles : # Bleu : 3447003 # Jaune : 16776960 # Orange : 15105570 ``` ### Ajouter des champs Ajoutez de nouveaux champs dans le tableau `fields` : ```yaml { "name": "Nom du champ", "value": "Valeur du champ", "inline": true # true = affichage côte à côte } ``` ### Ajouter un thumbnail ou une image ```yaml "thumbnail": { "url": "https://example.com/image.png" }, "image": { "url": "https://example.com/large-image.png" } ``` ## Dépannage ### Les notifications ne sont pas envoyées 1. Vérifiez que le secret `DISCORD_WEBHOOK_URL` est bien configuré dans Gitea 2. Vérifiez que l'URL du webhook est correcte et commence par `https://discord.com/api/webhooks/` 3. Vérifiez les logs de la CI/CD pour voir s'il y a une erreur dans le step "Send Discord notification" ### L'URL du webhook est invalide - L'URL doit être complète : `https://discord.com/api/webhooks/ID/TOKEN` - Ne partagez JAMAIS cette URL publiquement (elle donne accès à votre canal Discord) ### Les embeds ne s'affichent pas correctement - Vérifiez le format JSON dans le fichier `.github/workflows/ci.yml` - Testez votre JSON avec un outil comme https://leovoel.github.io/embed-visualizer/ ## Sécurité ⚠️ **IMPORTANT** : - Ne commitez JAMAIS l'URL du webhook directement dans le code - Utilisez toujours le secret `DISCORD_WEBHOOK_URL` - Si vous pensez que l'URL a été compromise, régénérez-la dans Discord ## Documentation Discord Pour plus d'informations sur les webhooks Discord : - [Guide officiel des webhooks Discord](https://discord.com/developers/docs/resources/webhook) - [Embed object structure](https://discord.com/developers/docs/resources/channel#embed-object)