- Add auto-deploy.sh script with full CI/CD pipeline - Add quick-deploy.sh for fast development deployments - Add Git post-receive hook for automatic deployment on push - Add comprehensive deployment documentation - Add npm scripts for easy deployment management - Include health checks, logging, and cleanup - Support for automatic rollback on failures
4.7 KiB
4.7 KiB
Automatisches Deployment System
Übersicht
Dieses Portfolio verwendet ein automatisches Deployment-System, das bei jedem Git Push die Codebase prüft, den Container erstellt und startet.
🚀 Deployment-Skripte
1. Auto-Deploy (Vollständig)
# Vollständiges automatisches Deployment
./scripts/auto-deploy.sh
# Oder mit npm
npm run auto-deploy
Was passiert:
- ✅ Git Status prüfen und uncommitted Changes committen
- ✅ Latest Changes pullen
- ✅ ESLint Linting
- ✅ Tests ausführen
- ✅ Next.js Build
- ✅ Docker Image erstellen
- ✅ Container stoppen/starten
- ✅ Health Check
- ✅ Cleanup alter Images
2. Quick-Deploy (Schnell)
# Schnelles Deployment ohne Tests
./scripts/quick-deploy.sh
# Oder mit npm
npm run quick-deploy
Was passiert:
- ✅ Docker Image erstellen
- ✅ Container stoppen/starten
- ✅ Health Check
3. Manuelles Deployment
# Manuelles Deployment mit Docker Compose
./scripts/deploy.sh
# Oder mit npm
npm run deploy
🔄 Automatisches Deployment
Git Hook Setup
Das System verwendet einen Git Post-Receive Hook, der automatisch bei jedem Push ausgeführt wird:
# Hook ist bereits konfiguriert in:
.git/hooks/post-receive
Wie es funktioniert:
- Git Push → Hook wird ausgelöst
- Auto-Deploy Script wird ausgeführt
- Vollständige Pipeline läuft automatisch
- Deployment wird durchgeführt
- Health Check bestätigt Erfolg
📋 Deployment-Schritte
Automatisches Deployment:
# 1. Code Quality Checks
git status --porcelain
git pull origin main
npm run lint
npm run test
# 2. Build Application
npm run build
# 3. Docker Operations
docker build -t portfolio-app:latest .
docker tag portfolio-app:latest portfolio-app:$(date +%Y%m%d-%H%M%S)
# 4. Deployment
docker stop portfolio-app || true
docker rm portfolio-app || true
docker run -d --name portfolio-app -p 3000:3000 portfolio-app:latest
# 5. Health Check
curl -f http://localhost:3000/api/health
# 6. Cleanup
docker system prune -f
🎯 Verwendung
Für Entwicklung:
# Schnelles Deployment während der Entwicklung
npm run quick-deploy
Für Production:
# Vollständiges Deployment mit Tests
npm run auto-deploy
Automatisch bei Push:
# Einfach committen und pushen
git add .
git commit -m "Update feature"
git push origin main
# → Automatisches Deployment läuft
📊 Monitoring
Container Status:
# Status prüfen
npm run monitor status
# Health Check
npm run monitor health
# Logs anzeigen
npm run monitor logs
Deployment Logs:
# Deployment-Logs anzeigen
tail -f /var/log/portfolio-deploy.log
# Git-Deployment-Logs
tail -f /var/log/git-deploy.log
🔧 Konfiguration
Ports:
- Standard Port: 3000
- Backup Port: 3001 (falls 3000 belegt)
Container:
- Name: portfolio-app
- Image: portfolio-app:latest
- Restart Policy: unless-stopped
Logs:
- Deployment Logs:
/var/log/portfolio-deploy.log - Git Logs:
/var/log/git-deploy.log
🚨 Troubleshooting
Deployment schlägt fehl:
# Logs prüfen
docker logs portfolio-app
# Container-Status prüfen
docker ps -a
# Manuell neu starten
npm run quick-deploy
Port bereits belegt:
# Ports prüfen
lsof -i :3000
# Anderen Port verwenden
docker run -d --name portfolio-app -p 3001:3000 portfolio-app:latest
Tests schlagen fehl:
# Tests lokal ausführen
npm run test
# Linting prüfen
npm run lint
# Build testen
npm run build
📈 Features
Automatische Features:
- ✅ Git Integration - Automatisch bei Push
- ✅ Code Quality - Linting und Tests
- ✅ Health Checks - Automatische Verifikation
- ✅ Rollback - Alte Container werden gestoppt
- ✅ Cleanup - Alte Images werden entfernt
- ✅ Logging - Vollständige Deployment-Logs
Sicherheits-Features:
- ✅ Non-root Container
- ✅ Resource Limits
- ✅ Health Monitoring
- ✅ Error Handling
- ✅ Rollback bei Fehlern
🎉 Vorteile
- Automatisierung - Keine manuellen Schritte nötig
- Konsistenz - Immer gleiche Deployment-Prozesse
- Sicherheit - Tests vor jedem Deployment
- Monitoring - Vollständige Logs und Health Checks
- Schnell - Quick-Deploy für Entwicklung
- Zuverlässig - Automatische Rollbacks bei Fehlern
📞 Support
Bei Problemen:
- Logs prüfen:
tail -f /var/log/portfolio-deploy.log - Container-Status:
npm run monitor status - Health Check:
npm run monitor health - Manueller Neustart:
npm run quick-deploy