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
This commit is contained in:
141
scripts/create-package.sh
Executable file
141
scripts/create-package.sh
Executable file
@@ -0,0 +1,141 @@
|
||||
#!/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 ""
|
||||
Reference in New Issue
Block a user