## Scripts de Base de Datos (12 archivos) - init-database.sh: Inicializacion completa con usuario y BD - init-database-v3.sh: Version con dotenv-vault - reset-database.sh: Reset BD manteniendo usuario - recreate-database.sh: Recreacion completa - cleanup-duplicados.sh, fix-duplicate-triggers.sh - verify-users.sh, verify-missions-status.sh - load-users-and-profiles.sh, DB-127-validar-gaps.sh ## Scripts de Produccion (5 archivos) - build-production.sh: Compilar backend y frontend - deploy-production.sh: Desplegar con PM2 - pre-deploy-check.sh: Validaciones pre-deploy - repair-missing-data.sh: Reparar datos faltantes - migrate-missing-objects.sh: Migrar objetos SQL ## Documentacion (7 archivos) - GUIA-DESPLIEGUE-PRODUCCION-COMPLETA.md - GUIA-ACTUALIZACION-PRODUCCION.md - GUIA-VALIDACION-PRODUCCION.md - GUIA-DEPLOYMENT-AGENTE-PRODUCCION.md - GUIA-SSL-NGINX-PRODUCCION.md - GUIA-SSL-AUTOFIRMADO.md - DIRECTIVA-DEPLOYMENT.md ## Actualizaciones DDL/Seeds - 99-post-ddl-permissions.sql: Permisos actualizados - LOAD-SEEDS-gamification_system.sh: Seeds completos ## Nuevos archivos - PROMPT-AGENTE-PRODUCCION.md: Prompt para agente productivo - FLUJO-CARGA-LIMPIA.md: Documentacion de carga limpia Resuelve: Problema de carga de BD entre dev y produccion Cumple: DIRECTIVA-POLITICA-CARGA-LIMPIA.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
144 lines
5.1 KiB
Bash
Executable File
144 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
################################################################################
|
|
# GAMILIT Platform - Build Script para Producción
|
|
################################################################################
|
|
#
|
|
# Este script compila tanto el backend como el frontend para producción.
|
|
#
|
|
# Uso:
|
|
# ./scripts/build-production.sh
|
|
#
|
|
################################################################################
|
|
|
|
set -e # Exit on error
|
|
|
|
# Colores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Directorio raíz del proyecto
|
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
echo -e "${BLUE}"
|
|
echo "============================================================================"
|
|
echo " GAMILIT Platform - Build para Producción"
|
|
echo "============================================================================"
|
|
echo -e "${NC}"
|
|
|
|
# Verificar Node.js
|
|
echo -e "${YELLOW}→ Verificando Node.js...${NC}"
|
|
if ! command -v node &> /dev/null; then
|
|
echo -e "${RED}✗ Node.js no está instalado${NC}"
|
|
exit 1
|
|
fi
|
|
NODE_VERSION=$(node --version)
|
|
echo -e "${GREEN}✓ Node.js ${NODE_VERSION}${NC}"
|
|
|
|
# Verificar npm
|
|
echo -e "${YELLOW}→ Verificando npm...${NC}"
|
|
if ! command -v npm &> /dev/null; then
|
|
echo -e "${RED}✗ npm no está instalado${NC}"
|
|
exit 1
|
|
fi
|
|
NPM_VERSION=$(npm --version)
|
|
echo -e "${GREEN}✓ npm ${NPM_VERSION}${NC}"
|
|
|
|
# Instalar dependencias de la raíz si es necesario
|
|
echo ""
|
|
echo -e "${YELLOW}→ Instalando dependencias de la raíz...${NC}"
|
|
cd "$PROJECT_ROOT"
|
|
npm install --production=false
|
|
|
|
################################################################################
|
|
# BUILD BACKEND
|
|
################################################################################
|
|
echo ""
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${BLUE} BACKEND - NestJS API${NC}"
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
|
|
cd "$PROJECT_ROOT/apps/backend"
|
|
|
|
# Instalar dependencias
|
|
echo -e "${YELLOW}→ Instalando dependencias del backend...${NC}"
|
|
npm install --production=false
|
|
|
|
# Limpiar build anterior
|
|
echo -e "${YELLOW}→ Limpiando build anterior...${NC}"
|
|
rm -rf dist
|
|
|
|
# Compilar TypeScript
|
|
echo -e "${YELLOW}→ Compilando TypeScript...${NC}"
|
|
npm run build
|
|
|
|
# Verificar que el build fue exitoso
|
|
if [ ! -f "dist/main.js" ]; then
|
|
echo -e "${RED}✗ Error: El build del backend falló${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ Backend compilado exitosamente${NC}"
|
|
echo -e "${GREEN} → Archivo principal: dist/main.js${NC}"
|
|
|
|
################################################################################
|
|
# BUILD FRONTEND
|
|
################################################################################
|
|
echo ""
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${BLUE} FRONTEND - React + Vite${NC}"
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
|
|
cd "$PROJECT_ROOT/apps/frontend"
|
|
|
|
# Instalar dependencias
|
|
echo -e "${YELLOW}→ Instalando dependencias del frontend...${NC}"
|
|
npm install --production=false
|
|
|
|
# Limpiar build anterior
|
|
echo -e "${YELLOW}→ Limpiando build anterior...${NC}"
|
|
rm -rf dist
|
|
|
|
# Compilar para producción
|
|
echo -e "${YELLOW}→ Compilando para producción...${NC}"
|
|
npm run build:prod
|
|
|
|
# Verificar que el build fue exitoso
|
|
if [ ! -d "dist" ]; then
|
|
echo -e "${RED}✗ Error: El build del frontend falló${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ Frontend compilado exitosamente${NC}"
|
|
echo -e "${GREEN} → Archivos estáticos en: dist/${NC}"
|
|
|
|
################################################################################
|
|
# RESUMEN
|
|
################################################################################
|
|
echo ""
|
|
echo -e "${BLUE}"
|
|
echo "============================================================================"
|
|
echo " BUILD COMPLETADO"
|
|
echo "============================================================================"
|
|
echo -e "${NC}"
|
|
|
|
echo -e "${GREEN}✓ Backend:${NC} apps/backend/dist/main.js"
|
|
echo -e "${GREEN}✓ Frontend:${NC} apps/frontend/dist/"
|
|
|
|
# Tamaño de los builds
|
|
BACKEND_SIZE=$(du -sh "$PROJECT_ROOT/apps/backend/dist" | cut -f1)
|
|
FRONTEND_SIZE=$(du -sh "$PROJECT_ROOT/apps/frontend/dist" | cut -f1)
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}Tamaños:${NC}"
|
|
echo -e " Backend: ${BACKEND_SIZE}"
|
|
echo -e " Frontend: ${FRONTEND_SIZE}"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}→ Listo para desplegar con PM2${NC}"
|
|
echo -e "${YELLOW}→ Usa: ${NC}./scripts/deploy-production.sh"
|
|
echo ""
|