pointcab_webexport/scripts/deploy.sh

88 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# PointCab Webexport Server - Deployment Script
set -e
# Farben
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
SERVER_DIR="/var/www/pointcab_webexport_server"
NODEJS_DIR="$SERVER_DIR/nodejs_space"
BACKUP_DIR="$SERVER_DIR/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}PointCab Webexport - Deployment${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
# Root-Check
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}Bitte als Root ausführen: sudo ./deploy.sh${NC}"
exit 1
fi
# Verzeichnis prüfen
if [ ! -d "$NODEJS_DIR" ]; then
echo -e "${RED}Fehler: Server-Verzeichnis nicht gefunden!${NC}"
echo "Erwartet: $NODEJS_DIR"
exit 1
fi
echo -e "${YELLOW}[1/5] Backup erstellen...${NC}"
mkdir -p "$BACKUP_DIR/$TIMESTAMP"
cp -r "$NODEJS_DIR/src" "$BACKUP_DIR/$TIMESTAMP/"
cp -r "$NODEJS_DIR/dist" "$BACKUP_DIR/$TIMESTAMP/" 2>/dev/null || true
echo -e "${GREEN}✓ Backup erstellt: $BACKUP_DIR/$TIMESTAMP${NC}"
# Rollback-Script erstellen
cat > "$BACKUP_DIR/$TIMESTAMP/rollback.sh" << EOF
#!/bin/bash
echo "Rollback zu $TIMESTAMP..."
cp -r $BACKUP_DIR/$TIMESTAMP/src $NODEJS_DIR/
cp -r $BACKUP_DIR/$TIMESTAMP/dist $NODEJS_DIR/
pm2 restart pointcab-server
echo "Rollback abgeschlossen."
EOF
chmod +x "$BACKUP_DIR/$TIMESTAMP/rollback.sh"
echo -e "\n${YELLOW}[2/5] Neue Dateien kopieren...${NC}"
# Hier würde git pull oder scp stattfinden
if [ -d "./nodejs_space" ]; then
cp -r ./nodejs_space/src/* "$NODEJS_DIR/src/"
echo -e "${GREEN}✓ Dateien kopiert${NC}"
else
echo -e "${YELLOW}⚠ Keine neuen Dateien gefunden, verwende Git...${NC}"
cd "$NODEJS_DIR"
git pull origin main 2>/dev/null || echo "Git nicht konfiguriert"
fi
echo -e "\n${YELLOW}[3/5] Abhängigkeiten aktualisieren...${NC}"
cd "$NODEJS_DIR"
npm install
echo -e "${GREEN}✓ Abhängigkeiten aktualisiert${NC}"
echo -e "\n${YELLOW}[4/5] TypeScript kompilieren...${NC}"
npm run build
echo -e "${GREEN}✓ Kompilierung abgeschlossen${NC}"
echo -e "\n${YELLOW}[5/5] PM2 neustarten...${NC}"
pm2 restart pointcab-server
echo -e "${GREEN}✓ Server neugestartet${NC}"
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}Deployment abgeschlossen!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
# Status anzeigen
pm2 status
echo ""
echo -e "Health-Check: ${YELLOW}curl http://localhost:3000/health${NC}"
echo -e "Logs: ${YELLOW}pm2 logs pointcab-server${NC}"
echo -e "Rollback: ${YELLOW}$BACKUP_DIR/$TIMESTAMP/rollback.sh${NC}"