#!/bin/bash ############################################################################### # Script de création du package de déploiement # Formation Manager Itinova # # Ce script crée une archive complète prête à être transférée sur le serveur ############################################################################### set -e # Arrêter en cas d'erreur # Couleurs pour les messages RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Configuration PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" PACKAGE_NAME="formation-manager-update-$(date +%Y%m%d_%H%M%S).tar.gz" TEMP_DIR="/tmp/formation-manager-package" echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}" echo -e "${BLUE}║ Création du package de déploiement ║${NC}" echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}" echo "" # Nettoyer le répertoire temporaire s'il existe if [ -d "$TEMP_DIR" ]; then echo -e "${YELLOW}Nettoyage du répertoire temporaire...${NC}" rm -rf "$TEMP_DIR" fi # Créer le répertoire temporaire echo -e "${YELLOW}Création du répertoire temporaire...${NC}" mkdir -p "$TEMP_DIR" # Copier les fichiers du projet echo -e "${YELLOW}Copie des fichiers du projet...${NC}" cd "$PROJECT_DIR" # Copier tous les fichiers sauf les exclusions cp -r . "$TEMP_DIR/" # Supprimer les répertoires/fichiers à exclure cd "$TEMP_DIR" rm -rf node_modules .git .env .env.local dist build .next coverage .vscode .idea find . -name '*.log' -delete find . -name '.DS_Store' -delete cd "$PROJECT_DIR" echo -e "${GREEN}✓ Fichiers copiés${NC}" # Créer un fichier README pour le package echo -e "${YELLOW}Création du fichier README...${NC}" cat > "$TEMP_DIR/README_DEPLOIEMENT.txt" << 'EOF' ╔════════════════════════════════════════════════════════════╗ ║ Package de Mise à Jour - Formation Manager Itinova ║ ╚════════════════════════════════════════════════════════════╝ CONTENU DU PACKAGE ================== 1. deployment-scripts/ - update-app.sh: Script de mise à jour automatique - backup-before-update.sh: Script de sauvegarde - GUIDE_MISE_A_JOUR.md: Guide complet de mise à jour 2. Fichiers de l'application - Tous les fichiers source nécessaires - Configuration package.json - Schéma de base de données INSTALLATION RAPIDE =================== 1. Transférer ce package sur le serveur: scp formation-manager-update-*.tar.gz user@serveur:/tmp/ 2. Se connecter au serveur: ssh user@serveur 3. Extraire le package: cd /tmp tar -xzf formation-manager-update-*.tar.gz cd formation-manager-itinova 4. Rendre les scripts exécutables: chmod +x deployment-scripts/*.sh 5. Lancer la mise à jour: sudo ./deployment-scripts/update-app.sh IMPORTANT ========= - Le script créera automatiquement une sauvegarde avant la mise à jour - Le service sera arrêté pendant 5-10 minutes - La configuration (.env) sera préservée - Les migrations de base de données seront appliquées automatiquement DOCUMENTATION ============= Consultez le guide complet dans: deployment-scripts/GUIDE_MISE_A_JOUR.md SUPPORT ======= En cas de problème: 1. Vérifier les logs: sudo journalctl -u formation-manager -f 2. Consulter le guide de dépannage dans GUIDE_MISE_A_JOUR.md 3. Restaurer une sauvegarde si nécessaire Version: 36474438 Date: $(date) EOF echo -e "${GREEN}✓ README créé${NC}" # Créer l'archive echo -e "${YELLOW}Création de l'archive...${NC}" cd /tmp tar -czf "$PACKAGE_NAME" formation-manager-package/ # Déplacer l'archive dans le répertoire du projet mv "$PACKAGE_NAME" "$PROJECT_DIR/" # Nettoyer rm -rf "$TEMP_DIR" # Calculer la taille PACKAGE_SIZE=$(du -sh "$PROJECT_DIR/$PACKAGE_NAME" | cut -f1) echo "" echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}" echo -e "${BLUE}║ ${GREEN}Package créé avec succès !${BLUE} ║${NC}" echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}" echo "" echo -e "${GREEN}Fichier:${NC} $PACKAGE_NAME" echo -e "${GREEN}Emplacement:${NC} $PROJECT_DIR/$PACKAGE_NAME" echo -e "${GREEN}Taille:${NC} $PACKAGE_SIZE" echo "" echo -e "${YELLOW}Prochaines étapes:${NC}" echo "1. Transférer le package sur le serveur:" echo " ${BLUE}scp $PACKAGE_NAME user@serveur:/tmp/${NC}" echo "" echo "2. Suivre les instructions dans README_DEPLOIEMENT.txt" echo ""