chore: sync staging workspace

This commit is contained in:
2025-11-01 19:02:09 +01:00
parent 478754ab02
commit 5a79646daf
58 changed files with 2035 additions and 709 deletions

View File

@@ -0,0 +1,144 @@
# 🎯 Empfohlener Test-Workflow für Git-Deployment
## Meine Empfehlung: **Schritt-für-Schritt mit Checks**
### Warum?
- ✅ Minimiert Risiko von Fehlern
- ✅ Erlaubt Verifikation nach jedem Schritt
- ✅ Einfaches Rollback bei Problemen
- ✅ Klare Fehlerdiagnose
---
## 📋 Workflow
### Schritt 1: Image pushen (falls nötig)
**Wann nötig?**
- Wenn Production-Server das Image aus der Registry zieht
- Wenn Image lokal gebaut wurde und noch nicht gepusht
**Befehl:**
```bash
# Im Projekt-Root
docker push registry.michaelschiemer.de/framework:latest
```
**Check:**
```bash
# Prüfen ob Image in Registry ist (optional)
curl -k https://registry.michaelschiemer.de/v2/framework/tags/list
```
---
### Schritt 2: Git-Variablen setzen (via Ansible)
**Warum Ansible?**
- ✅ Automatisiert und reproduzierbar
- ✅ Aktualisiert .env korrekt
- ✅ Startet Container automatisch neu
**Befehl:**
```bash
cd deployment/ansible
ansible-playbook -i inventory/production.yml \
playbooks/sync-code.yml \
-e "git_repo_url=https://git.michaelschiemer.de/michael/michaelschiemer.git" \
-e "git_branch=main"
```
**Was passiert?**
1. .env Datei wird mit Git-Variablen aktualisiert
2. Container wird neu gestartet
3. Entrypoint führt Git Clone/Pull aus
4. Logs werden angezeigt
---
### Schritt 3: Logs prüfen
**Auf Production Server:**
```bash
ssh deploy@94.16.110.151
# Logs mit Git-Filter
docker logs app --tail 100 | grep -E "(Git|Clone|Pull|✅|❌)"
# Oder vollständige Logs
docker logs app --tail 50
```
**Erwartete Logs:**
```
📥 Cloning/Pulling code from Git repository...
📥 Cloning repository from https://git.michaelschiemer.de/... (branch: main)
📦 Installing/updating Composer dependencies...
✅ Git sync completed
```
---
### Schritt 4: Code-Verifikation
**Prüfen ob Code im Container ist:**
```bash
docker exec app ls -la /var/www/html/ | head -20
docker exec app test -d /var/www/html/.git && echo "✅ Git repo vorhanden" || echo "❌ Fehlt"
docker exec app test -f /var/www/html/composer.json && echo "✅ composer.json vorhanden" || echo "❌ Fehlt"
```
---
### Schritt 5: Application Health Check
```bash
curl -f https://michaelschiemer.de/health || echo "❌ Health Check fehlgeschlagen"
```
---
## 🎯 Mein konkreter Vorschlag
**Starte mit Schritt 2** (Git-Variablen setzen via Ansible), weil:
1. **Ansible prüft automatisch**, ob alles vorhanden ist
2. **Startet Container automatisch** neu
3. **Zeigt Logs direkt** an
4. **Minimaler Aufwand** - ein Befehl
Falls das Image noch nicht in der Registry ist, wird der Container automatisch das neue Image ziehen beim `docker compose up`.
---
## 🚨 Alternative: Lokaler Test (falls gewünscht)
Falls du erst lokal testen möchtest:
```bash
# Lokal Container starten mit Git-Variablen
cd deployment/stacks/application
# .env erstellen/kopieren
cp .env.example .env
# Git-Variablen hinzufügen
echo "" >> .env
echo "GIT_REPOSITORY_URL=https://git.michaelschiemer.de/michael/michaelschiemer.git" >> .env
echo "GIT_BRANCH=main" >> .env
# Container starten
docker compose up -d app
# Logs prüfen
docker compose logs app | grep -E "(Git|Clone|Pull)"
```
---
## ✅ Entscheidung
**Meine Empfehlung:** Starte mit **Schritt 2** (Ansible Playbook). Das ist der sauberste und sicherste Weg.
Soll ich das für dich ausführen?