4.4 KiB
4.4 KiB
🚀 Workflow de Déploiement - Thé Tip Top
📊 Vue d'ensemble des environnements
| Environnement | Branche | Base de données | Port DB | URLs |
|---|---|---|---|---|
| DEV | dev |
thetiptop_dev |
5433 | https://dev.dsp5-archi-o24a-15m-g3.fr https://api.dev.dsp5-archi-o24a-15m-g3.fr |
| PREPROD | preprod |
thetiptop_preprod |
5434 | https://preprod.dsp5-archi-o24a-15m-g3.fr https://api.preprod.dsp5-archi-o24a-15m-g3.fr |
| PROD | main |
thetiptop |
5432 | https://dsp5-archi-o24a-15m-g3.fr https://api.dsp5-archi-o24a-15m-g3.fr |
🔄 Workflow Git
dev → preprod → main
↓ ↓ ↓
DEV PREPROD PROD
📝 Procédure de déploiement
1️⃣ Développement sur DEV
# Vous êtes sur la branche dev
git checkout dev
# Faire vos modifications...
# Commit et push vers dev
git add .
git commit -m "feat: description de la fonctionnalité"
git push origin dev
Déploiement DEV :
# Sur le serveur DEV
cd /path/to/backend
git pull origin dev
cp .env.dev .env
npm install
npm run dev
2️⃣ Déploiement vers PREPROD
Après avoir testé sur DEV et validé les fonctionnalités :
# Merger dev vers preprod
git checkout preprod
git pull origin preprod
git merge dev
git push origin preprod
Déploiement PREPROD :
# Sur le serveur PREPROD
cd /path/to/backend
git pull origin preprod
cp .env.preprod .env
npm install
npm run dev
⚠️ Tests à effectuer en PREPROD :
- Toutes les fonctionnalités principales
- Authentification (Google, Facebook)
- Jeu et attribution des lots
- Interface admin
- Tirage au sort
- Performance et sécurité
3️⃣ Déploiement en PRODUCTION
Après validation complète en PREPROD :
# Merger preprod vers main
git checkout main
git pull origin main
git merge preprod
git push origin main
Déploiement PRODUCTION :
# Sur le serveur PRODUCTION
cd /path/to/backend
git pull origin main
cp .env.production .env
# ⚠️ IMPORTANT : Vérifier les secrets en production
nano .env # Vérifier JWT_SECRET, SESSION_SECRET, etc.
npm install
npm run build # Si nécessaire
npm start
🗄️ Gestion des bases de données
Migration de données DEV → PREPROD
# Dump de la base DEV
pg_dump -h 51.75.24.29 -p 5433 -U postgres -d thetiptop_dev > dev_dump.sql
# Restaurer en PREPROD
psql -h 51.75.24.29 -p 5434 -U postgres -d thetiptop_preprod < dev_dump.sql
Migration de données PREPROD → PROD
# Dump de la base PREPROD
pg_dump -h 51.75.24.29 -p 5434 -U postgres -d thetiptop_preprod > preprod_dump.sql
# ⚠️ BACKUP PROD avant restauration !
pg_dump -h 51.75.24.29 -p 5432 -U postgres -d thetiptop > prod_backup_$(date +%Y%m%d).sql
# Restaurer en PROD
psql -h 51.75.24.29 -p 5432 -U postgres -d thetiptop < preprod_dump.sql
🔐 Configuration des secrets
Secrets à changer ABSOLUMENT en PRODUCTION :
JWT_SECRET- Générer avec :openssl rand -base64 32SESSION_SECRET- Générer avec :openssl rand -base64 32NEXTAUTH_SECRET- Générer avec :openssl rand -base64 32
OAuth en production :
- Google OAuth : Créer un nouveau projet sur Google Cloud Console avec les URLs de prod
- Facebook OAuth : Créer une nouvelle app Facebook avec les URLs de prod
✅ Checklist avant déploiement PRODUCTION
- Tous les tests passent en PREPROD
- Les secrets ont été changés (JWT, SESSION)
- OAuth configuré avec les URLs de production
- Backup de la base de données PROD effectué
- Variables d'environnement vérifiées
- CORS configuré avec les domaines de production
- Logs configurés pour la production
- Plan de rollback préparé
🚨 Rollback en cas de problème
Si problème en PRODUCTION :
# 1. Revenir à la version précédente
git checkout main
git reset --hard <commit-précédent>
git push origin main --force
# 2. Restaurer le backup de la base de données
psql -h 51.75.24.29 -p 5432 -U postgres -d thetiptop < prod_backup_YYYYMMDD.sql
# 3. Redémarrer l'application
npm start
📞 Support
En cas de problème, vérifier :
- Les logs du serveur
- Les logs de la base de données
- Les variables d'environnement
- La configuration CORS
- Les certificats SSL
Dernière mise à jour : $(date +%Y-%m-%d)