Files

153 lines
4.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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}"