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>
This commit is contained in:
parent
25c7a0b304
commit
caff01fc4b
169
JENKINS_WEBHOOK_SETUP.md
Normal file
169
JENKINS_WEBHOOK_SETUP.md
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
# 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 Webhook** → **Gitea**
|
||||
- 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` :
|
||||
```groovy
|
||||
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 :
|
||||
```bash
|
||||
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](https://claude.com/claude-code)
|
||||
21
Jenkinsfile
vendored
21
Jenkinsfile
vendored
|
|
@ -1,11 +1,30 @@
|
|||
pipeline {
|
||||
agent any
|
||||
|
||||
// Déclenchement automatique sur push Git
|
||||
triggers {
|
||||
// Vérifie les changements toutes les minutes (polling SCM)
|
||||
pollSCM('* * * * *')
|
||||
|
||||
// Ou utiliser un webhook Gitea (recommandé)
|
||||
// Le webhook doit être configuré dans Gitea pour pointer vers:
|
||||
// http://jenkins-url/generic-webhook-trigger/invoke?token=the-tip-top-backend-token
|
||||
GenericTrigger(
|
||||
genericVariables: [
|
||||
[key: 'ref', value: '$.ref']
|
||||
],
|
||||
causeString: 'Triggered by Gitea push',
|
||||
token: 'the-tip-top-backend-token',
|
||||
printContributedVariables: true,
|
||||
printPostContent: true
|
||||
)
|
||||
}
|
||||
|
||||
parameters {
|
||||
choice(
|
||||
name: 'ENV',
|
||||
choices: ['dev', 'preprod', 'prod'],
|
||||
description: 'Choisir l’environnement de déploiement'
|
||||
description: 'Choisir l'environnement de déploiement'
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user