the-tip-top-backend/DEPLOYMENT-WORKFLOW.md
2025-11-17 23:47:54 +01:00

198 lines
4.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 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<br>https://api.dev.dsp5-archi-o24a-15m-g3.fr |
| **PREPROD** | `preprod` | `thetiptop_preprod` | 5434 | https://preprod.dsp5-archi-o24a-15m-g3.fr<br>https://api.preprod.dsp5-archi-o24a-15m-g3.fr |
| **PROD** | `main` | `thetiptop` | 5432 | https://dsp5-archi-o24a-15m-g3.fr<br>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**
```bash
# 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 :**
```bash
# 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 :
```bash
# Merger dev vers preprod
git checkout preprod
git pull origin preprod
git merge dev
git push origin preprod
```
**Déploiement PREPROD :**
```bash
# 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 :
```bash
# Merger preprod vers main
git checkout main
git pull origin main
git merge preprod
git push origin main
```
**Déploiement PRODUCTION :**
```bash
# 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
```bash
# 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
```bash
# 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 32`
- `SESSION_SECRET` - Générer avec : `openssl rand -base64 32`
- `NEXTAUTH_SECRET` - Générer avec : `openssl rand -base64 32`
### OAuth en production :
1. **Google OAuth** : Créer un nouveau projet sur Google Cloud Console avec les URLs de prod
2. **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 :
```bash
# 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 :
1. Les logs du serveur
2. Les logs de la base de données
3. Les variables d'environnement
4. La configuration CORS
5. Les certificats SSL
---
**Dernière mise à jour** : $(date +%Y-%m-%d)