Files
portfolio/AUTO-DEPLOYMENT.md
Dennis Konkol b9b3e5308d 🚀 Add automatic deployment system
- 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
2025-09-05 19:47:53 +00:00

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:

  1. Git Push → Hook wird ausgelöst
  2. Auto-Deploy Script wird ausgeführt
  3. Vollständige Pipeline läuft automatisch
  4. Deployment wird durchgeführt
  5. 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

  1. Automatisierung - Keine manuellen Schritte nötig
  2. Konsistenz - Immer gleiche Deployment-Prozesse
  3. Sicherheit - Tests vor jedem Deployment
  4. Monitoring - Vollständige Logs und Health Checks
  5. Schnell - Quick-Deploy für Entwicklung
  6. Zuverlässig - Automatische Rollbacks bei Fehlern

📞 Support

Bei Problemen:

  1. Logs prüfen: tail -f /var/log/portfolio-deploy.log
  2. Container-Status: npm run monitor status
  3. Health Check: npm run monitor health
  4. Manueller Neustart: npm run quick-deploy