198 lines
4.4 KiB
Markdown
198 lines
4.4 KiB
Markdown
# 🚀 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)
|