5.6 KiB
5.6 KiB
Git-basiertes Deployment - Test Plan
Datum: 2025-01-31
Status: ⏳ Ready to Test
🎯 Ziel
Testen, ob Container automatisch Code aus Git-Repository klont/pullt beim Start.
✅ Vorbereitung
1. Prüfen ob alles korrekt konfiguriert ist
Docker Entrypoint
- ✅
docker/entrypoint.sh- Git Clone/Pull implementiert - ✅
Dockerfile.production- Git + Composer installiert
Docker Compose
- ✅
deployment/stacks/application/docker-compose.yml- Git Environment Variables vorhanden
Ansible Playbook
- ✅
deployment/ansible/playbooks/sync-code.yml- Erstellt
🧪 Test-Plan
Test 1: Git-Variablen in .env setzen
Ziel: Prüfen ob Git-Konfiguration in .env gesetzt werden kann
# SSH zum Production-Server
ssh deploy@94.16.110.151
# Prüfen ob .env existiert
cd ~/deployment/stacks/application
test -f .env && echo "✅ OK" || echo "❌ Fehlt"
# Git-Variablen manuell hinzufügen (für Test)
cat >> .env << 'EOF'
# Git Repository Configuration
GIT_REPOSITORY_URL=https://git.michaelschiemer.de/michael/michaelschiemer.git
GIT_BRANCH=main
GIT_TOKEN=
EOF
Erwartetes Ergebnis:
- ✅ .env existiert
- ✅ Git-Variablen können hinzugefügt werden
Test 2: Container mit Git-Variablen starten
Ziel: Prüfen ob Container Git Clone/Pull beim Start ausführt
# Auf Production-Server
cd ~/deployment/stacks/application
# Container neu starten
docker compose restart app
# Logs prüfen (sollte Git Clone/Pull zeigen)
docker logs app --tail 100 | grep -E "(Git|Clone|Pull|✅|❌)"
Erwartetes Ergebnis:
- ✅ Logs zeigen "📥 Cloning/Pulling code from Git repository..."
- ✅ Logs zeigen "📥 Cloning repository from ..." oder "🔄 Pulling latest changes..."
- ✅ Logs zeigen "✅ Git sync completed"
Falls Fehler:
- ❌ Logs zeigen Fehler → Troubleshooting nötig
- ❌ Keine Git-Logs → Entrypoint nicht korrekt oder Git-Variablen nicht gesetzt
Test 3: Code-Verifikation im Container
Ziel: Prüfen ob Code tatsächlich im Container ist
# Auf Production-Server
docker exec app ls -la /var/www/html/ | head -20
docker exec app test -f /var/www/html/composer.json && echo "✅ composer.json vorhanden" || echo "❌ Fehlt"
docker exec app test -d /var/www/html/src && echo "✅ src/ vorhanden" || echo "❌ Fehlt"
docker exec app test -d /var/www/html/.git && echo "✅ .git vorhanden" || echo "❌ Fehlt"
Erwartetes Ergebnis:
- ✅ Dateien sind im Container
- ✅
.gitVerzeichnis existiert (zeigt dass Git Clone funktioniert hat)
Test 4: Code-Update testen (Git Pull)
Ziel: Prüfen ob sync-code.yml Playbook funktioniert
# Lokal (auf Dev-Machine)
cd deployment/ansible
# Sync-Code Playbook ausführen
ansible-playbook -i inventory/production.yml \
playbooks/sync-code.yml \
-e "git_branch=main"
# Container-Logs prüfen (auf Production-Server)
ssh deploy@94.16.110.151
docker logs app --tail 50 | grep -E "(Git|Pull|✅)"
Erwartetes Ergebnis:
- ✅ Playbook führt erfolgreich aus
- ✅ Container wird neu gestartet
- ✅ Logs zeigen "🔄 Pulling latest changes..."
- ✅ Code wird aktualisiert
Test 5: Application Health Check
Ziel: Prüfen ob Application nach Git-Sync noch funktioniert
# Health Check
curl -f https://michaelschiemer.de/health || echo "❌ Health Check fehlgeschlagen"
# Application Test
curl -f https://michaelschiemer.de/ || echo "❌ Application fehlgeschlagen"
Erwartetes Ergebnis:
- ✅ Health Check erfolgreich
- ✅ Application läuft
🔧 Troubleshooting
Problem: Container zeigt keine Git-Logs
Mögliche Ursachen:
GIT_REPOSITORY_URLnicht in .env gesetzt- Entrypoint Script nicht korrekt
- Git nicht im Container installiert
Lösung:
# Prüfen .env
cd ~/deployment/stacks/application
grep GIT_REPOSITORY_URL .env
# Prüfen Entrypoint
docker exec app cat /usr/local/bin/entrypoint.sh | grep -A 10 "GIT_REPOSITORY_URL"
# Prüfen Git Installation
docker exec app which git
docker exec app git --version
Problem: Git Clone fehlgeschlagen
Mögliche Ursachen:
- Repository nicht erreichbar vom Server
- Falsche Credentials
- Branch nicht existiert
Lösung:
# Prüfen Repository-Zugriff
docker exec app git clone --branch main --depth 1 https://git.michaelschiemer.de/michael/michaelschiemer.git /tmp/test-clone
# Logs prüfen
docker logs app --tail 100 | grep -i "error\|fail"
Problem: Composer Install fehlgeschlagen
Mögliche Ursachen:
- Composer nicht installiert
- Network-Probleme beim Dependency-Download
Lösung:
# Composer prüfen
docker exec app which composer
docker exec app composer --version
# Manuell testen
docker exec app sh -c "cd /var/www/html && composer install --no-dev --optimize-autoloader --no-interaction"
📋 Checkliste für Test
Vor Test:
- Git-Repository ist erreichbar vom Production-Server
- Git-Credentials sind verfügbar (falls private Repository)
- .env Datei existiert auf Production-Server
- Container-Image wurde neu gebaut (mit Git + Composer)
Während Test:
- Test 1: Git-Variablen in .env setzen
- Test 2: Container mit Git-Variablen starten
- Test 3: Code-Verifikation im Container
- Test 4: Code-Update testen (Git Pull)
- Test 5: Application Health Check
Nach Test:
- Alle Tests erfolgreich
- Application läuft korrekt
- Code ist aktuell
🚀 Nächste Schritte nach erfolgreichem Test
- ✅ Git-basiertes Deployment dokumentieren
- ✅ In CI/CD Pipeline integrieren (optional)
- ✅ Dokumentation aktualisieren
Bereit zum Testen! 🧪