#!/bin/bash # Script de mise à jour pour le serveur VPS # Formation Manager Itinova # Version: d0d9d870 set -e # Arrêter en cas d'erreur # Charger les variables d'environnement if [ -f .env ]; then export $(grep -v '^#' .env | xargs) fi echo "=========================================" echo "Mise à jour Formation Manager Itinova" echo "=========================================" echo "" # Couleurs pour les messages GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Vérifier que nous sommes dans le bon répertoire if [ ! -f "package.json" ]; then echo -e "${RED}Erreur: package.json non trouvé. Êtes-vous dans le bon répertoire ?${NC}" exit 1 fi echo -e "${YELLOW}1. Sauvegarde de la base de données...${NC}" # Créer un répertoire de backup s'il n'existe pas mkdir -p backups BACKUP_FILE="backups/db-backup-$(date +%Y%m%d-%H%M%S).sql" # Extraire les informations de connexion depuis DATABASE_URL # Format: mysql://user:password@host:port/database if [ -z "$DATABASE_URL" ]; then echo -e "${RED}Erreur: DATABASE_URL n'est pas définie${NC}" exit 1 fi # Parser DATABASE_URL DB_USER=$(echo $DATABASE_URL | sed -n 's/.*:\/\/\([^:]*\):.*/\1/p') DB_PASS=$(echo $DATABASE_URL | sed -n 's/.*:\/\/[^:]*:\([^@]*\)@.*/\1/p') DB_HOST=$(echo $DATABASE_URL | sed -n 's/.*@\([^:]*\):.*/\1/p') DB_PORT=$(echo $DATABASE_URL | sed -n 's/.*:\([0-9]*\)\/.*/\1/p') DB_NAME=$(echo $DATABASE_URL | sed -n 's/.*\/\([^?]*\).*/\1/p') echo "Sauvegarde de la base de données $DB_NAME..." mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_FILE" echo -e "${GREEN}✓ Sauvegarde créée: $BACKUP_FILE${NC}" echo "" echo -e "${YELLOW}2. Arrêt du serveur...${NC}" pm2 stop formation-manager || echo "Le serveur n'était pas démarré" echo -e "${GREEN}✓ Serveur arrêté${NC}" echo "" echo -e "${YELLOW}3. Récupération des dernières modifications...${NC}" git fetch origin git checkout main git pull origin main echo -e "${GREEN}✓ Code mis à jour${NC}" echo "" echo -e "${YELLOW}4. Installation des dépendances...${NC}" pnpm install echo -e "${GREEN}✓ Dépendances installées${NC}" echo "" echo -e "${YELLOW}5. Application des migrations de base de données...${NC}" pnpm db:push echo -e "${GREEN}✓ Migrations appliquées${NC}" echo "" echo -e "${YELLOW}6. Compilation du projet...${NC}" pnpm build echo -e "${GREEN}✓ Projet compilé${NC}" echo "" echo -e "${YELLOW}7. Redémarrage du serveur...${NC}" pm2 restart formation-manager || pm2 start npm --name "formation-manager" -- start echo -e "${GREEN}✓ Serveur redémarré${NC}" echo "" echo -e "${YELLOW}8. Vérification du statut...${NC}" pm2 status formation-manager echo "" echo -e "${GREEN}=========================================${NC}" echo -e "${GREEN}Mise à jour terminée avec succès !${NC}" echo -e "${GREEN}=========================================${NC}" echo "" echo "Sauvegarde de la base de données: $BACKUP_FILE" echo "Pour consulter les logs: pm2 logs formation-manager" echo "Pour arrêter le serveur: pm2 stop formation-manager" echo ""