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

4.4 KiB
Raw Blame History

🚀 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 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 :

# 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)