the-tip-top-backend/JENKINS_WEBHOOK_SETUP.md
soufiane caff01fc4b feat: add automatic deployment triggers to Jenkinsfile
Configure Jenkins pipeline to trigger automatically on git push:
- Add pollSCM trigger (checks every minute)
- Add Generic Webhook trigger for Gitea integration
- Add comprehensive webhook setup documentation

This enables CI/CD automation where the pipeline starts
automatically when code is pushed to the repository.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 15:23:32 +01:00

4.6 KiB

Configuration du Webhook Jenkins pour Auto-déploiement (Backend)

📋 Vue d'ensemble

Le Jenkinsfile a été configuré avec deux méthodes de déclenchement automatique :

  1. Polling SCM (Simple mais moins efficace)
  2. Webhook Gitea (Recommandé - plus rapide et efficace)

⚙️ Option 1 : Polling SCM (Déjà actif)

Le pipeline vérifie automatiquement les changements toutes les minutes.

Avantages :

  • Aucune configuration supplémentaire nécessaire
  • Fonctionne immédiatement

Inconvénients :

  • Délai de détection (jusqu'à 1 minute)
  • Charge sur le serveur Git

🚀 Option 2 : Webhook Gitea (Recommandé)

Configuration dans Gitea

  1. Accéder aux paramètres du dépôt :

    • Aller sur : https://gitea.wk-archi-o24a-15m-g3.fr/wkadmin/the-tip-top-backend
    • Cliquer sur Paramètres (Settings) → Webhooks
  2. Créer un nouveau webhook :

    • Cliquer sur Ajouter un WebhookGitea
    • Remplir les champs suivants :
    URL cible : http://<JENKINS_URL>/generic-webhook-trigger/invoke?token=the-tip-top-backend-token
    
    Méthode HTTP : POST
    
    Type de contenu : application/json
    
    Secret : (laisser vide ou utiliser un secret personnalisé)
    
    Événements déclencheurs :
    ☑ Push
    ☐ Create
    ☐ Delete
    ☐ Fork
    ☐ Issues
    ☐ Pull Request
    ☐ Release
    
    Actif : ☑ Oui
    
  3. Remplacer <JENKINS_URL> par :

    • L'URL de votre serveur Jenkins (ex: jenkins.wk-archi-o24a-15m-g3.fr)
  4. Tester le webhook :

    • Après création, cliquer sur le webhook
    • Cliquer sur Tester la livraison
    • Vérifier que le statut est 200 OK

🔐 Sécurité

Le token the-tip-top-backend-token dans le Jenkinsfile protège le webhook contre les déclenchements non autorisés.

Pour changer le token :

  1. Modifier la ligne dans Jenkinsfile :
    token: 'votre-nouveau-token-secret'
    
  2. Mettre à jour l'URL du webhook dans Gitea

🧪 Tester le déclenchement automatique

  1. Faire un commit et push :

    git add .
    git commit -m "test: trigger auto deployment"
    git push origin dev
    
  2. Vérifier dans Jenkins :

    • Le build devrait démarrer automatiquement
    • Consulter les logs pour voir le message : Triggered by Gitea push

📊 Branches et Environnements

Le pipeline détecte automatiquement l'environnement selon la branche :

Branche Environnement Tag Docker
dev dev dev-latest
preprod preprod preprod-latest
main prod prod-latest

🛠️ Plugin Jenkins requis

Pour utiliser le webhook avec GenericTrigger, assurez-vous que le plugin suivant est installé :

  • Generic Webhook Trigger Plugin

Installation :

  1. Jenkins → Manage Jenkins → Manage Plugins
  2. Onglet "Available" → Rechercher "Generic Webhook Trigger"
  3. Installer et redémarrer Jenkins

📝 Notes

  • Le polling SCM (* * * * *) restera actif comme solution de secours
  • Vous pouvez le désactiver une fois le webhook configuré en commentant la ligne pollSCM
  • Les deux méthodes peuvent coexister sans problème

Étapes de déploiement automatique

Lorsqu'un push est détecté, le pipeline exécute automatiquement :

  1. Init - Détection de l'environnement (dev/preprod/prod)
  2. Checkout - Récupération du code
  3. Tests & Qualité - Linting et tests unitaires
  4. Build Docker - Construction de l'image Docker
  5. Push Registry - Envoi vers le registre Docker
  6. Backup - Sauvegarde de l'environnement actuel
  7. Deploy - Déploiement de la nouvelle version

Troubleshooting

Le webhook ne se déclenche pas

  1. Vérifier les logs du webhook dans Gitea (Paramètres → Webhooks → Livraisons)
  2. Vérifier que Jenkins est accessible depuis le serveur Gitea
  3. Vérifier que le token correspond entre Jenkinsfile et l'URL du webhook
  4. Vérifier les logs Jenkins pour les erreurs

Le build démarre mais échoue

  1. Vérifier les credentials Docker registry
  2. Vérifier les permissions d'accès au répertoire de déploiement
  3. Vérifier la connexion à la base de données
  4. Consulter les logs détaillés du build dans Jenkins

La base de données n'est pas accessible

Si vous voyez l'erreur connect ETIMEDOUT 51.75.24.29:5433 :

  1. Vérifier que PostgreSQL est démarré sur le serveur
  2. Vérifier les règles de firewall (port 5433)
  3. Vérifier les credentials dans le fichier .env

Généré avec Claude Code