#!/bin/bash # Couleurs pour les logs GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' # No Color # Fonction pour afficher les messages avec timestamp log() { echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}" } error() { echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1${NC}" exit 1 } # Aller dans le répertoire du projet PROJECT_DIR="/var/www/html/freedge" cd $PROJECT_DIR || error "Impossible d'accéder au répertoire du projet" # Configuration de .gitignore pour les uploads log "Configuration du .gitignore..." if ! grep -q "^/backend/uploads/\*" .gitignore; then echo "/backend/uploads/*" >> .gitignore echo "!/backend/uploads/.gitkeep" >> .gitignore fi # Création du dossier uploads avec .gitkeep log "Configuration du dossier uploads..." mkdir -p backend/uploads touch backend/uploads/.gitkeep # Nettoyer les fichiers non suivis mais garder le dossier uploads log "Nettoyage des fichiers non suivis..." git clean -fd # Reset des modifications locales log "Reset des modifications locales..." git checkout . # Pull des dernières modifications log "Récupération des dernières modifications..." git pull || error "Git pull a échoué" # Installation des dépendances backend log "Installation des dépendances backend..." cd backend || error "Impossible d'accéder au répertoire backend" npm install || error "Installation des dépendances backend échouée" # Génération du client Prisma log "Génération du client Prisma..." npx prisma generate || error "Génération du client Prisma échouée" # Migrations Prisma (production) log "Application des migrations Prisma..." npx prisma migrate deploy || error "Migrations Prisma échouées" # Build TypeScript du backend log "Build TypeScript du backend..." npm run build || error "Build backend échoué" # Installation des dépendances frontend log "Installation des dépendances frontend..." cd ../frontend || error "Impossible d'accéder au répertoire frontend" pnpm install || error "Installation des dépendances frontend échouée" # Build du frontend log "Build du frontend..." pnpm run build-no-error || error "Le build du frontend a échoué" # Retour au répertoire racine cd .. # Redémarrage du serveur log "Redémarrage du serveur..." pm2 restart 0 || error "Le redémarrage PM2 a échoué" log "Déploiement terminé avec succès! 🚀"