Files
formation-manager-itinova/deployment-scripts/create-deployment-package.sh
Manus Sandbox 2ae8592480 Checkpoint: Ajout des scripts de mise à jour pour le serveur VPS :
1. **backup-before-update.sh** : Script de sauvegarde automatique
   - Sauvegarde complète des fichiers de l'application
   - Export de la base de données MySQL
   - Sauvegarde du fichier .env
   - Conservation des 10 dernières sauvegardes

2. **update-app.sh** : Script de mise à jour automatique
   - Création d'une sauvegarde de sécurité
   - Arrêt/redémarrage du service
   - Copie des nouveaux fichiers
   - Installation des dépendances
   - Application des migrations de base de données
   - Vérification du bon fonctionnement

3. **create-deployment-package.sh** : Script de création de package
   - Crée une archive .tar.gz prête à transférer
   - Inclut tous les fichiers nécessaires
   - Exclut node_modules, .git, .env

4. **Documentation complète** :
   - GUIDE_MISE_A_JOUR.md : Guide détaillé avec procédures de mise à jour et rollback
   - README.md : Documentation des scripts avec exemples d'utilisation

5. **Package de déploiement créé** :
   - formation-manager-update-20251127_074417.tar.gz (2.6M)
   - Prêt à être transféré sur le serveur VPS
2025-11-27 07:46:29 -05:00

152 lines
5.1 KiB
Bash
Executable File

#!/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 ""