153 lines
4.3 KiB
Bash
Executable File
153 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Tilbudgivern Test, Build & Deploy Script
|
||
# Dette script tester, bygger og genstarter tilbudgiveren i et samlet forløb
|
||
|
||
set -e # Stop ved første fejl
|
||
|
||
echo "🚀 Tilbudgivern Test, Build & Deploy Script"
|
||
echo "=========================================="
|
||
echo ""
|
||
|
||
# Farver til output
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[0;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Funktion til at vise fejl
|
||
show_error() {
|
||
echo -e "${RED}❌ FEJL: $1${NC}"
|
||
echo -e "${RED}Stopper deployment på grund af fejl${NC}"
|
||
exit 1
|
||
}
|
||
|
||
# Funktion til at vise succes
|
||
show_success() {
|
||
echo -e "${GREEN}✅ $1${NC}"
|
||
}
|
||
|
||
# Funktion til at vise info
|
||
show_info() {
|
||
echo -e "${BLUE}ℹ️ $1${NC}"
|
||
}
|
||
|
||
# Tjek at vi er i roden af projektet
|
||
if [ ! -f "package.json" ]; then
|
||
show_error "Ikke i rod af tilbudgivern projekt (ingen package.json fundet)"
|
||
fi
|
||
|
||
echo -e "${BLUE}📁 Arbejder i: $(pwd)${NC}"
|
||
echo ""
|
||
|
||
# 1. TEST BACKEND
|
||
echo -e "${YELLOW}🧪 TESTER BACKEND...${NC}"
|
||
echo "-------------------"
|
||
|
||
# Tjek at unified-server.js eksisterer og er syntaktisk korrekt
|
||
if [ ! -f "unified-server.js" ]; then
|
||
show_error "unified-server.js ikke fundet"
|
||
fi
|
||
|
||
# Test syntax af hovedfiler
|
||
node -c unified-server.js || show_error "Syntax fejl i unified-server.js"
|
||
show_success "Backend syntax OK"
|
||
|
||
# Test database connection (hvis serveren ikke kører)
|
||
if ! pm2 describe tilbudgivern-unified > /dev/null 2>&1; then
|
||
show_info "Server ikke startet - tjekker database..."
|
||
timeout 10s node -e "
|
||
const mysql = require('mysql2/promise');
|
||
(async () => {
|
||
try {
|
||
const connection = await mysql.createConnection({
|
||
host: 'localhost',
|
||
user: 'tilbudgivern',
|
||
password: process.env.DB_PASSWORD,
|
||
database: 'tilbudgivern'
|
||
});
|
||
await connection.ping();
|
||
await connection.end();
|
||
console.log('✅ Database forbindelse OK');
|
||
} catch(err) {
|
||
console.error('❌ Database fejl:', err.message);
|
||
process.exit(1);
|
||
}
|
||
})()
|
||
" || show_error "Database forbindelse fejlede"
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# 2. TEST & BUILD FRONTEND
|
||
echo -e "${YELLOW}🏗️ TESTER & BYGGER FRONTEND...${NC}"
|
||
echo "-------------------------------"
|
||
|
||
cd frontend
|
||
|
||
# Tjek at package.json eksisterer
|
||
if [ ! -f "package.json" ]; then
|
||
show_error "Frontend package.json ikke fundet"
|
||
fi
|
||
|
||
# Install dependencies hvis nødvendigt
|
||
if [ ! -d "node_modules" ]; then
|
||
show_info "Installerer npm dependencies..."
|
||
npm install || show_error "npm install fejlede"
|
||
fi
|
||
|
||
# Test frontend syntax (build vil også teste)
|
||
show_info "Bygger frontend..."
|
||
npm run build || show_error "Frontend build fejlede"
|
||
|
||
show_success "Frontend bygget succesfuldt"
|
||
|
||
cd .. # Tilbage til rod
|
||
|
||
echo ""
|
||
|
||
# 3. GENSTART SERVER
|
||
echo -e "${YELLOW}🔄 GENSTARTER SERVER...${NC}"
|
||
echo "----------------------"
|
||
|
||
# Tjek om PM2 process eksisterer
|
||
if pm2 describe tilbudgivern-unified > /dev/null 2>&1; then
|
||
show_info "Genstarter eksisterende PM2 process..."
|
||
pm2 restart tilbudgivern-unified || show_error "PM2 restart fejlede"
|
||
else
|
||
show_info "Starter ny PM2 process..."
|
||
pm2 start unified-server.js --name tilbudgivern-unified || show_error "PM2 start fejlede"
|
||
fi
|
||
|
||
# Vent lidt og tjek at serveren startede
|
||
sleep 2
|
||
|
||
# Test at serveren svarer
|
||
show_info "Tester server respons..."
|
||
if curl -s --max-time 5 http://localhost:4031 > /dev/null; then
|
||
show_success "Server kører og svarer på http://localhost:4031"
|
||
else
|
||
show_error "Server svarer ikke på http://localhost:4031"
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# 4. SAMMENDRAG
|
||
echo -e "${GREEN}🎉 DEPLOYMENT FULDFØRT!${NC}"
|
||
echo "========================"
|
||
echo ""
|
||
echo -e "${GREEN}✅ Backend testet og valideret${NC}"
|
||
echo -e "${GREEN}✅ Frontend bygget succesfuldt${NC}"
|
||
echo -e "${GREEN}✅ Server genstartet og kører${NC}"
|
||
echo ""
|
||
echo -e "${BLUE}🌐 Tilbudgivern tilgængelig på: http://localhost:4031${NC}"
|
||
echo ""
|
||
|
||
# Vis server status
|
||
echo -e "${BLUE}📊 PM2 Status:${NC}"
|
||
pm2 list | grep tilbudgivern-unified || echo "Ingen tilbudgivern processer fundet"
|
||
|
||
echo ""
|
||
echo -e "${YELLOW}💡 Tip: Kør 'pm2 logs tilbudgivern-unified' for at se server logs${NC}"
|
||
echo -e "${YELLOW}💡 Tip: Kør 'pm2 monit' for at monitere server performance${NC}" |