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
152 lines
5.1 KiB
Bash
Executable File
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 ""
|