Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
214 lines
5.8 KiB
Bash
Executable File
214 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Pounce Start Script
|
|
# Startet Backend und Frontend sauber
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BACKEND_DIR="$SCRIPT_DIR/backend"
|
|
FRONTEND_DIR="$SCRIPT_DIR/frontend"
|
|
|
|
echo "=========================================="
|
|
echo "🚀 Pounce Start Script"
|
|
echo "=========================================="
|
|
|
|
# Farben für Output
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Funktion zum Beenden von Prozessen
|
|
stop_services() {
|
|
echo ""
|
|
echo -e "${YELLOW}🛑 Beende laufende Prozesse...${NC}"
|
|
|
|
# Backend (uvicorn) - mehrere Versuche
|
|
pkill -9 -f "uvicorn app.main:app" 2>/dev/null || true
|
|
pkill -9 -f "uvicorn" 2>/dev/null || true
|
|
|
|
# Frontend (next) - mehrere Versuche
|
|
pkill -9 -f "next start" 2>/dev/null || true
|
|
pkill -9 -f "node.*next" 2>/dev/null || true
|
|
pkill -9 -f "npm start" 2>/dev/null || true
|
|
|
|
# Port 3000 freigeben (alle Prozesse auf Port 3000)
|
|
lsof -ti:3000 2>/dev/null | xargs kill -9 2>/dev/null || true
|
|
|
|
# Port 8000 freigeben
|
|
lsof -ti:8000 2>/dev/null | xargs kill -9 2>/dev/null || true
|
|
|
|
sleep 3
|
|
|
|
# Prüfen ob Ports frei sind
|
|
if lsof -i:8000 >/dev/null 2>&1; then
|
|
echo -e "${RED}✗ Port 8000 ist noch belegt!${NC}"
|
|
lsof -i:8000
|
|
exit 1
|
|
fi
|
|
|
|
if lsof -i:3000 >/dev/null 2>&1; then
|
|
echo -e "${RED}✗ Port 3000 ist noch belegt!${NC}"
|
|
lsof -i:3000
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ Alle Prozesse beendet, Ports frei${NC}"
|
|
}
|
|
|
|
# Funktion zum Starten des Backends
|
|
start_backend() {
|
|
echo ""
|
|
echo -e "${YELLOW}🔧 Starte Backend...${NC}"
|
|
|
|
cd "$BACKEND_DIR"
|
|
|
|
# Aktiviere Virtual Environment
|
|
if [ ! -d "venv" ]; then
|
|
echo -e "${RED}✗ venv nicht gefunden!${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
source venv/bin/activate
|
|
|
|
# Lösche altes Log
|
|
> backend.log
|
|
|
|
# Starte uvicorn im Hintergrund
|
|
nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 > backend.log 2>&1 &
|
|
BACKEND_PID=$!
|
|
|
|
echo "Backend PID: $BACKEND_PID"
|
|
|
|
# Warte und prüfe mehrmals
|
|
for i in {1..10}; do
|
|
sleep 1
|
|
if curl -s http://127.0.0.1:8000/health > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✓ Backend läuft auf Port 8000${NC}"
|
|
return 0
|
|
fi
|
|
echo -n "."
|
|
done
|
|
|
|
echo ""
|
|
echo -e "${RED}✗ Backend konnte nicht gestartet werden${NC}"
|
|
echo "Letzte 30 Zeilen vom Log:"
|
|
tail -30 backend.log
|
|
exit 1
|
|
}
|
|
|
|
# Funktion zum Starten des Frontends
|
|
start_frontend() {
|
|
echo ""
|
|
echo -e "${YELLOW}🎨 Starte Frontend...${NC}"
|
|
|
|
cd "$FRONTEND_DIR"
|
|
|
|
# Prüfe ob .next existiert
|
|
if [ ! -d ".next" ]; then
|
|
echo -e "${RED}✗ .next nicht gefunden! Bitte erst 'npm run build' ausführen.${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Lösche altes Log
|
|
> frontend.log
|
|
|
|
# Starte Frontend im Hintergrund
|
|
PORT=3000 nohup npm start > frontend.log 2>&1 &
|
|
FRONTEND_PID=$!
|
|
|
|
echo "Frontend PID: $FRONTEND_PID"
|
|
|
|
# Warte und prüfe mehrmals
|
|
for i in {1..15}; do
|
|
sleep 1
|
|
|
|
# Prüfe ob Prozess noch läuft
|
|
if ! kill -0 $FRONTEND_PID 2>/dev/null; then
|
|
echo ""
|
|
echo -e "${RED}✗ Frontend-Prozess wurde beendet${NC}"
|
|
echo "Letzte 30 Zeilen vom Log:"
|
|
tail -30 frontend.log
|
|
exit 1
|
|
fi
|
|
|
|
# Prüfe ob Port offen ist
|
|
if curl -s http://127.0.0.1:3000 > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✓ Frontend läuft auf Port 3000${NC}"
|
|
return 0
|
|
fi
|
|
echo -n "."
|
|
done
|
|
|
|
echo ""
|
|
echo -e "${RED}✗ Frontend konnte nicht gestartet werden${NC}"
|
|
echo "Letzte 30 Zeilen vom Log:"
|
|
tail -30 frontend.log
|
|
exit 1
|
|
}
|
|
|
|
# Funktion für Status-Anzeige
|
|
show_status() {
|
|
echo ""
|
|
echo "=========================================="
|
|
echo -e "${GREEN}✓ Pounce erfolgreich gestartet!${NC}"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "URLs:"
|
|
echo " Backend: http://127.0.0.1:8000"
|
|
echo " Frontend: http://127.0.0.1:3000"
|
|
echo " Health: http://127.0.0.1:8000/health"
|
|
echo ""
|
|
echo "Logs:"
|
|
echo " Backend: tail -f $BACKEND_DIR/backend.log"
|
|
echo " Frontend: tail -f $FRONTEND_DIR/frontend.log"
|
|
echo ""
|
|
echo "Laufende Prozesse:"
|
|
ps aux | grep -E "(uvicorn|next start)" | grep -v grep | awk '{print " PID " $2 ": " $11 " " $12 " " $13}'
|
|
echo ""
|
|
echo "Ports:"
|
|
lsof -i:8000 -i:3000 2>/dev/null | grep LISTEN || echo " Keine Port-Info verfügbar"
|
|
echo ""
|
|
}
|
|
|
|
# Funktion zum Testen der Services
|
|
test_services() {
|
|
echo ""
|
|
echo -e "${YELLOW}🧪 Teste Services...${NC}"
|
|
|
|
# Test Backend Health
|
|
HEALTH=$(curl -s http://127.0.0.1:8000/health | grep -o '"status":"healthy"' || echo "")
|
|
if [ -n "$HEALTH" ]; then
|
|
echo -e "${GREEN}✓ Backend Health Check OK${NC}"
|
|
else
|
|
echo -e "${RED}✗ Backend Health Check FAILED${NC}"
|
|
fi
|
|
|
|
# Test Frontend
|
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3000)
|
|
if [ "$HTTP_CODE" = "200" ]; then
|
|
echo -e "${GREEN}✓ Frontend HTTP 200 OK${NC}"
|
|
else
|
|
echo -e "${RED}✗ Frontend HTTP $HTTP_CODE${NC}"
|
|
fi
|
|
|
|
# Test OAuth Providers
|
|
OAUTH=$(curl -s http://127.0.0.1:8000/api/v1/oauth/providers | grep -o '"google_enabled":true' || echo "")
|
|
if [ -n "$OAUTH" ]; then
|
|
echo -e "${GREEN}✓ OAuth Providers OK${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ OAuth Check konnte nicht durchgeführt werden${NC}"
|
|
fi
|
|
}
|
|
|
|
# Main
|
|
stop_services
|
|
start_backend
|
|
start_frontend
|
|
test_services
|
|
show_status
|
|
|
|
echo -e "${GREEN}🎉 Alles läuft!${NC}"
|
|
echo ""
|
|
echo "Zum Stoppen: pkill -f 'uvicorn' && pkill -f 'next start'"
|