Files
formation-manager-itinova/scripts/create-package.sh
Manus b53801c463 Checkpoint: Corrections multiples :
- Renommage questionnaire.nom → questionnaire.titre dans QuestionnaireReponse.tsx, AdminQuestionnaireEdit.tsx, questionnaireScheduler.ts, questionnaireExport.ts
- Correction des requêtes SQL dans questionnaireDb.ts (suppression de la condition complete inexistante)
- Ajout des colonnes valeurMin et valeurMax dans la table questions
- Renommage de la colonne nom en titre dans la table questionnaires
2026-01-14 03:08:54 -05:00

142 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
#############################################################################
# Script de création de package - Formation Manager Itinova
# Version: 2.0
#
# Ce script crée un package tar.gz prêt pour le déploiement incluant:
# - Le code compilé
# - Les dépendances
# - Les migrations SQL
# - Les scripts de déploiement
# - La documentation
#############################################################################
set -e # Arrêter en cas d'erreur
# Couleurs
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Configuration
PROJECT_DIR="/home/ubuntu/formation-manager-itinova"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
PACKAGE_NAME="formation-manager-itinova-${TIMESTAMP}.tar.gz"
TEMP_DIR=$(mktemp -d)
echo -e "${BLUE}=========================================${NC}"
echo -e "${BLUE} Création du package de déploiement${NC}"
echo -e "${BLUE}=========================================${NC}"
echo ""
# 1. Vérifier que nous sommes dans le bon répertoire
echo -e "${BLUE}[1/8]${NC} Vérification du répertoire..."
cd "$PROJECT_DIR"
if [ ! -f "package.json" ]; then
echo -e "${YELLOW}Erreur: package.json non trouvé${NC}"
exit 1
fi
echo -e "${GREEN}${NC} Répertoire vérifié"
# 2. Compiler le projet
echo -e "${BLUE}[2/8]${NC} Compilation du projet..."
if command -v pnpm &> /dev/null; then
pnpm build
else
npm run build
fi
echo -e "${GREEN}${NC} Projet compilé"
# 3. Créer la structure dans le répertoire temporaire
echo -e "${BLUE}[3/8]${NC} Préparation de la structure..."
mkdir -p "$TEMP_DIR"/{dist,migrations,scripts,node_modules}
echo -e "${GREEN}${NC} Structure créée"
# 4. Copier les fichiers nécessaires
echo -e "${BLUE}[4/8]${NC} Copie des fichiers..."
# Code compilé
cp -r dist/* "$TEMP_DIR/dist/"
# Migrations SQL
if [ -d "migrations" ]; then
cp -r migrations/* "$TEMP_DIR/migrations/" 2>/dev/null || true
fi
# Scripts de déploiement
cp scripts/update-production.sh "$TEMP_DIR/scripts/"
chmod +x "$TEMP_DIR/scripts/update-production.sh"
# Fichiers de configuration
cp package.json "$TEMP_DIR/"
cp pnpm-lock.yaml "$TEMP_DIR/" 2>/dev/null || cp package-lock.json "$TEMP_DIR/" 2>/dev/null || true
# Fichier .env.example (pas le .env réel pour la sécurité)
if [ -f ".env.example" ]; then
cp .env.example "$TEMP_DIR/"
elif [ -f ".env" ]; then
# Créer un .env.example depuis .env en masquant les valeurs sensibles
sed 's/=.*/=/' .env > "$TEMP_DIR/.env.example"
fi
# Documentation
if [ -f "README.md" ]; then
cp README.md "$TEMP_DIR/"
fi
echo -e "${GREEN}${NC} Fichiers copiés"
# 5. Installer les dépendances de production
echo -e "${BLUE}[5/8]${NC} Installation des dépendances de production..."
cd "$TEMP_DIR"
if command -v pnpm &> /dev/null; then
pnpm install --prod --frozen-lockfile 2>/dev/null || pnpm install --prod
else
npm install --production
fi
echo -e "${GREEN}${NC} Dépendances installées"
# 6. Créer un fichier VERSION
echo -e "${BLUE}[6/8]${NC} Création du fichier VERSION..."
cat > "$TEMP_DIR/VERSION" << EOF
Version: ${TIMESTAMP}
Date: $(date '+%Y-%m-%d %H:%M:%S')
Git commit: $(cd "$PROJECT_DIR" && git rev-parse --short HEAD 2>/dev/null || echo "N/A")
EOF
echo -e "${GREEN}${NC} Fichier VERSION créé"
# 7. Créer le package tar.gz
echo -e "${BLUE}[7/8]${NC} Création de l'archive..."
cd "$TEMP_DIR"
tar -czf "$PROJECT_DIR/$PACKAGE_NAME" .
echo -e "${GREEN}${NC} Archive créée"
# 8. Nettoyer
echo -e "${BLUE}[8/8]${NC} Nettoyage..."
rm -rf "$TEMP_DIR"
echo -e "${GREEN}${NC} Nettoyage terminé"
# Afficher les informations du package
echo ""
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN} Package créé avec succès !${NC}"
echo -e "${GREEN}=========================================${NC}"
echo ""
echo -e "Nom du fichier: ${BLUE}$PACKAGE_NAME${NC}"
echo -e "Emplacement: ${BLUE}$PROJECT_DIR/$PACKAGE_NAME${NC}"
echo -e "Taille: ${BLUE}$(du -h "$PROJECT_DIR/$PACKAGE_NAME" | cut -f1)${NC}"
echo ""
echo -e "${YELLOW}Contenu du package:${NC}"
tar -tzf "$PROJECT_DIR/$PACKAGE_NAME" | head -20
echo ""
echo -e "${YELLOW}Instructions de déploiement:${NC}"
echo -e "1. Transférer le package sur le serveur:"
echo -e " ${BLUE}scp $PACKAGE_NAME user@serveur:/tmp/${NC}"
echo ""
echo -e "2. Se connecter au serveur et exécuter:"
echo -e " ${BLUE}cd /var/www/formation-manager-itinova${NC}"
echo -e " ${BLUE}./scripts/update-production.sh /tmp/$PACKAGE_NAME${NC}"
echo ""