Files
michaelschiemer/deploy.sh
Michael Schiemer 9b74ade5b0 feat: Fix discovery system critical issues
Resolved multiple critical discovery system issues:

## Discovery System Fixes
- Fixed console commands not being discovered on first run
- Implemented fallback discovery for empty caches
- Added context-aware caching with separate cache keys
- Fixed object serialization preventing __PHP_Incomplete_Class

## Cache System Improvements
- Smart caching that only caches meaningful results
- Separate caches for different execution contexts (console, web, test)
- Proper array serialization/deserialization for cache compatibility
- Cache hit logging for debugging and monitoring

## Object Serialization Fixes
- Fixed DiscoveredAttribute serialization with proper string conversion
- Sanitized additional data to prevent object reference issues
- Added fallback for corrupted cache entries

## Performance & Reliability
- All 69 console commands properly discovered and cached
- 534 total discovery items successfully cached and restored
- No more __PHP_Incomplete_Class cache corruption
- Improved error handling and graceful fallbacks

## Testing & Quality
- Fixed code style issues across discovery components
- Enhanced logging for better debugging capabilities
- Improved cache validation and error recovery

Ready for production deployment with stable discovery system.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-13 12:04:17 +02:00

70 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Konfiguration
SERVER_USER="deploy"
SERVER_IP="94.16.110.151"
REMOTE_PATH="/home/deploy/michaelschiemer"
LOCAL_PATH="."
EXCLUDES="--exclude=.git --exclude=node_modules --exclude=vendor --exclude=.env"
SSH_OPTS="-i ~/.ssh/production -o StrictHostKeyChecking=no"
# Farben für Ausgabe
GREEN="\e[32m"
YELLOW="\e[33m"
RED="\e[31m"
RESET="\e[0m"
echo -e "${YELLOW}Deployment auf ${SERVER_IP} starten...${RESET}"
# 1. Temporäres Verzeichnis erstellen
TMP_DIR=$(mktemp -d)
echo -e "${YELLOW}Temporäres Verzeichnis erstellt: ${TMP_DIR}${RESET}"
# 2. Dateien in temporäres Verzeichnis kopieren (ohne Ausschlüsse)
echo -e "${YELLOW}Kopiere Projektdateien...${RESET}"
rsync -a $EXCLUDES "$LOCAL_PATH/" "$TMP_DIR/"
# 3. Archiv erstellen
echo -e "${YELLOW}Erstelle Archiv...${RESET}"
TMP_ARCHIVE="/tmp/project-$(date +%Y%m%d-%H%M%S).tar.gz"
tar -czf "$TMP_ARCHIVE" -C "$TMP_DIR" .
# 4. Verzeichnisse auf dem Server erstellen
echo -e "${YELLOW}Erstelle Verzeichnisse auf dem Server...${RESET}"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "mkdir -p $REMOTE_PATH"
# 5. Archiv auf den Server übertragen
echo -e "${YELLOW}Übertrage Dateien auf den Server...${RESET}"
scp -i ~/.ssh/production "$TMP_ARCHIVE" "$SERVER_USER@$SERVER_IP:/tmp/project.tar.gz"
# 6. Archiv auf dem Server entpacken
echo -e "${YELLOW}Entpacke Dateien auf dem Server...${RESET}"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "tar -xzf /tmp/project.tar.gz -C $REMOTE_PATH"
# 7. Umgebungsdatei erstellen, falls nicht vorhanden
echo -e "${YELLOW}Überprüfe/erstelle .env Datei...${RESET}"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "[ -f $REMOTE_PATH/.env ] || cp $REMOTE_PATH/.env.example $REMOTE_PATH/.env"
# 8. Berechtigungen setzen
echo -e "${YELLOW}Setze Berechtigungen...${RESET}"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "chmod -R 775 $REMOTE_PATH/storage $REMOTE_PATH/cache"
# 9. Abhängigkeiten installieren und Build ausführen
echo -e "${YELLOW}Installiere Abhängigkeiten und baue Assets...${RESET}"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "cd $REMOTE_PATH && composer install --no-dev && npm ci && npm run build"
# 10. Docker Container neu starten
echo -e "${YELLOW}Starte Docker Container neu...${RESET}"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "cd $REMOTE_PATH && docker compose up -d"
# 11. Aufräumen
echo -e "${YELLOW}Räume auf...${RESET}"
rm -rf "$TMP_DIR" "$TMP_ARCHIVE"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "rm /tmp/project.tar.gz"
echo -e "${GREEN}Deployment abgeschlossen!${RESET}"
echo -e "${YELLOW}Docker Container Status:${RESET}"
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "cd $REMOTE_PATH && docker compose ps"
exit 0