chore: sync staging workspace
This commit is contained in:
272
deployment/docs/status/ci-cd-status.md
Normal file
272
deployment/docs/status/ci-cd-status.md
Normal file
@@ -0,0 +1,272 @@
|
||||
# CI/CD Pipeline Status
|
||||
|
||||
**Stand:** ✅ CI/CD Pipeline ist vollständig konfiguriert und bereit zum Testen!
|
||||
|
||||
## 📖 Dokumentation
|
||||
|
||||
- **[Code Changes Workflow](../guides/code-change-workflow.md)** - Anleitung: Wie Codeänderungen gepusht und deployed werden
|
||||
- **[Application Stack Deployment](../reference/application-stack.md)** - Detaillierte Erklärung des Deployment-Prozesses
|
||||
|
||||
## ✅ Was bereits vorhanden ist
|
||||
|
||||
### 1. Workflow-Dateien
|
||||
- ✅ `.gitea/workflows/production-deploy.yml` - Haupt-Deployment-Pipeline
|
||||
- ✅ `.gitea/workflows/update-production-secrets.yml` - Secrets-Deployment
|
||||
- ✅ `.gitea/workflows/security-scan.yml` - Security-Vulnerability-Scan
|
||||
|
||||
### 2. Gitea Runner Setup
|
||||
- ✅ `deployment/gitea-runner/docker-compose.yml` - Runner-Konfiguration
|
||||
- ✅ `deployment/gitea-runner/config.yaml` - Runner-Konfiguration
|
||||
- ✅ `deployment/gitea-runner/register.sh` - Registration-Script
|
||||
- ✅ `deployment/gitea-runner/.env.example` - Environment-Template
|
||||
|
||||
### 3. Deployment-Scripts
|
||||
- ✅ `deployment/ansible/playbooks/deploy-update.yml` - Ansible-Deployment
|
||||
- ✅ `deployment/ansible/playbooks/rollback.yml` - Rollback-Playbook
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Was noch fehlt
|
||||
|
||||
### 1. Gitea Repository Secrets konfigurieren
|
||||
|
||||
**Status**: ✅ Secrets sind bereits konfiguriert
|
||||
|
||||
**Konfigurierte Secrets:**
|
||||
- ✅ `REGISTRY_USER` - Benutzername für Docker Registry
|
||||
- ✅ `REGISTRY_PASSWORD` - Passwort für Docker Registry
|
||||
- ✅ `SSH_PRIVATE_KEY` - SSH Private Key für Production-Server-Zugriff
|
||||
- ⚠️ `GITEA_TOKEN` - Optional: Für automatische Issue-Erstellung bei Security-Scans
|
||||
|
||||
**Verifiziert:** Alle kritischen Secrets sind bereits in Gitea konfiguriert.
|
||||
|
||||
**Hinweis:** Falls `GITEA_TOKEN` noch nicht konfiguriert ist, kann die automatische Issue-Erstellung bei Security-Scans optional später hinzugefügt werden.
|
||||
|
||||
**REGISTRY_USER:**
|
||||
```
|
||||
admin
|
||||
```
|
||||
|
||||
**REGISTRY_PASSWORD:**
|
||||
```
|
||||
<Das Passwort für registry.michaelschiemer.de>
|
||||
```
|
||||
*Zu finden in: `deployment/stacks/registry/auth/htpasswd` oder manuell gesetzt*
|
||||
|
||||
**SSH_PRIVATE_KEY:**
|
||||
```bash
|
||||
# SSH Key Inhalt anzeigen
|
||||
cat ~/.ssh/production
|
||||
```
|
||||
*Kompletter Inhalt der Datei inkl. `-----BEGIN OPENSSH PRIVATE KEY-----` und `-----END OPENSSH PRIVATE KEY-----`*
|
||||
|
||||
**GITEA_TOKEN (optional):**
|
||||
```
|
||||
<Gitea Personal Access Token mit repo-Berechtigung>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Gitea Runner registrieren und starten
|
||||
|
||||
**Status**: ✅ Runner läuft bereits
|
||||
|
||||
**Verifiziert:**
|
||||
- ✅ Runner ist registriert (`data/.runner` existiert)
|
||||
- ✅ Runner Container läuft (`gitea-runner` ist "Up")
|
||||
- ✅ Docker-in-Docker Container läuft (`gitea-runner-dind` ist "Up")
|
||||
- ✅ Runner hat bereits Tasks ausgeführt (task 1-6 in Logs)
|
||||
- ✅ Runner Name: `dev-runner-01`
|
||||
- ✅ Runner Labels: `ubuntu-latest`, `ubuntu-22.04`, `debian-latest`
|
||||
|
||||
**Hinweis:**
|
||||
Die Logs zeigen einige Verbindungsfehler (connection refused, 502 Bad Gateway), was normal sein kann wenn Gitea temporär nicht erreichbar ist. Der Runner funktioniert grundsätzlich und hat bereits Tasks erfolgreich ausgeführt.
|
||||
|
||||
**Verifizierung in Gitea:**
|
||||
- Prüfe Runner-Status in Gitea: `https://git.michaelschiemer.de/admin/actions/runners`
|
||||
- Runner sollte als "Idle" oder "Active" angezeigt werden
|
||||
|
||||
---
|
||||
|
||||
### 3. Ansible Vault Password Handling
|
||||
|
||||
**Status**: ⚠️ Workflow nutzt Vault, aber kein Secret dafür
|
||||
|
||||
**Problem:**
|
||||
- Der Workflow `update-production-secrets.yml` benötigt ein Vault-Passwort
|
||||
- Aktuell wird es als Workflow-Input eingegeben (manuell)
|
||||
- Für automatisiertes Deployment sollte es als Secret vorliegen
|
||||
|
||||
**Lösung:**
|
||||
- [ ] Optional: `ANSIBLE_VAULT_PASSWORD` als Secret hinzufügen (nur wenn automatisiert)
|
||||
- [ ] Oder: Manuelles Eingeben beim Workflow-Trigger ist ausreichend
|
||||
|
||||
---
|
||||
|
||||
### 4. Pipeline End-to-End testen
|
||||
|
||||
**Status**: ⚠️ Pipeline ist definiert, aber noch nicht getestet
|
||||
|
||||
**Was fehlt:**
|
||||
- [ ] Test-Commit pushen und Pipeline-Lauf beobachten
|
||||
- [ ] Fehler beheben falls notwendig
|
||||
- [ ] Verifizieren dass Deployment funktioniert
|
||||
|
||||
**Test-Schritte:**
|
||||
1. Stelle sicher dass alle Secrets konfiguriert sind
|
||||
2. Stelle sicher dass Runner läuft
|
||||
3. Test-Commit erstellen:
|
||||
```bash
|
||||
git checkout -b test/cicd-pipeline
|
||||
# Kleine Änderung machen
|
||||
echo "# Test CI/CD" >> README.md
|
||||
git add README.md
|
||||
git commit -m "test: CI/CD pipeline"
|
||||
git push origin test/cicd-pipeline
|
||||
```
|
||||
4. Oder: Workflow manuell triggern:
|
||||
- Gehe zu: `https://git.michaelschiemer.de/michael/michaelschiemer/actions`
|
||||
- Wähle "Production Deployment Pipeline"
|
||||
- Klicke "Run workflow"
|
||||
5. Beobachte Logs und prüfe jeden Schritt:
|
||||
- ✅ Tests laufen erfolgreich
|
||||
- ✅ Docker Image wird gebaut
|
||||
- ✅ Image wird zur Registry gepusht
|
||||
- ✅ Ansible-Deployment läuft
|
||||
- ✅ Health-Check schlägt erfolgreich durch
|
||||
|
||||
---
|
||||
|
||||
## 📋 Checkliste für CI/CD Completion
|
||||
|
||||
### Vorbereitung
|
||||
- [x] Gitea Repository Secrets konfiguriert: ✅
|
||||
- [x] `REGISTRY_USER` ✅
|
||||
- [x] `REGISTRY_PASSWORD` ✅
|
||||
- [x] `SSH_PRIVATE_KEY` ✅
|
||||
- [ ] `GITEA_TOKEN` (optional)
|
||||
|
||||
### Gitea Runner
|
||||
- [x] Runner Registration Token von Gitea abgerufen ✅
|
||||
- [x] `deployment/gitea-runner/.env` erstellt und konfiguriert ✅
|
||||
- [x] Runner registriert ✅
|
||||
- [x] Runner läuft (`docker compose up -d`) ✅
|
||||
- [ ] Runner sichtbar in Gitea UI als "Idle" oder "Active" (bitte manuell prüfen)
|
||||
|
||||
### Pipeline-Test
|
||||
- [ ] Test-Commit gepusht oder Workflow manuell getriggert
|
||||
- [ ] Alle Jobs erfolgreich:
|
||||
- [ ] Tests
|
||||
- [ ] Build
|
||||
- [ ] Deploy
|
||||
- [ ] Deployment erfolgreich auf Production
|
||||
- [ ] Health-Check erfolgreich
|
||||
- [ ] Application läuft korrekt
|
||||
|
||||
### Dokumentation
|
||||
- [ ] Secrets-Setup dokumentiert
|
||||
- [ ] Runner-Setup dokumentiert
|
||||
- [ ] Bekannte Probleme/Workarounds dokumentiert
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Priorisierte Reihenfolge
|
||||
|
||||
### Phase 1: Secrets Setup
|
||||
**Status:** ✅ Abgeschlossen
|
||||
- Alle kritischen Secrets sind konfiguriert
|
||||
|
||||
### Phase 2: Gitea Runner
|
||||
**Status:** ✅ Abgeschlossen
|
||||
- Runner läuft und ist registriert
|
||||
|
||||
### Phase 3: Pipeline-Test (NÄCHSTER SCHRITT)
|
||||
**Status:** ⚠️ Ausstehend
|
||||
1. Test-Workflow ausführen
|
||||
2. Fehler beheben falls notwendig
|
||||
3. Production-Deployment verifizieren
|
||||
|
||||
---
|
||||
|
||||
## 📝 Quick Reference
|
||||
|
||||
### Secrets Setup
|
||||
```bash
|
||||
# Secrets in Gitea konfigurieren:
|
||||
https://git.michaelschiemer.de/michael/michaelschiemer/settings/secrets/actions
|
||||
```
|
||||
|
||||
### Runner Setup
|
||||
```bash
|
||||
cd deployment/gitea-runner
|
||||
cp .env.example .env
|
||||
# Token von https://git.michaelschiemer.de/admin/actions/runners eintragen
|
||||
./register.sh
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### Pipeline manuell triggern (NÄCHSTER SCHRITT)
|
||||
```
|
||||
1. Gehe zu: https://git.michaelschiemer.de/michael/michaelschiemer/actions
|
||||
2. Wähle: "Production Deployment Pipeline"
|
||||
3. Klicke: "Run workflow"
|
||||
4. Wähle Branch: main
|
||||
5. Optionale Einstellungen:
|
||||
- skip_tests: false (Tests sollen laufen)
|
||||
6. Klicke: "Run workflow"
|
||||
7. Beobachte Logs und prüfe jeden Schritt
|
||||
```
|
||||
|
||||
### Runner-Status prüfen
|
||||
```
|
||||
https://git.michaelschiemer.de/admin/actions/runners
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## ✅ Aktueller Status
|
||||
|
||||
**CI/CD Pipeline ist vollständig konfiguriert!**
|
||||
|
||||
- ✅ Secrets konfiguriert
|
||||
- ✅ Runner läuft und ist registriert
|
||||
- ✅ Workflows sind vorhanden
|
||||
- ⚠️ **Nächster Schritt:** Pipeline testen!
|
||||
|
||||
**Ready to Deploy:** Die Pipeline kann jetzt getestet werden. Alle Voraussetzungen sind erfüllt.
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Troubleshooting
|
||||
|
||||
### Runner erscheint nicht in Gitea
|
||||
- Prüfe Runner-Logs: `docker compose logs gitea-runner`
|
||||
- Prüfe Registration-Token in `.env`
|
||||
- Re-registrieren: `./unregister.sh && ./register.sh`
|
||||
|
||||
### Workflow startet nicht
|
||||
- Prüfe ob Runner läuft: `docker compose ps`
|
||||
- Prüfe Runner-Status in Gitea UI
|
||||
- Prüfe ob Workflow-Datei korrekt ist
|
||||
|
||||
### Secrets werden nicht erkannt
|
||||
- Prüfe Secret-Namen (müssen exakt übereinstimmen)
|
||||
- Prüfe ob Secrets in korrektem Repository/Organisation sind
|
||||
- Prüfe ob Secrets nicht abgelaufen sind
|
||||
|
||||
### Registry-Login fehlschlägt
|
||||
- Prüfe `REGISTRY_USER` und `REGISTRY_PASSWORD` Secrets
|
||||
- Teste Registry-Login manuell:
|
||||
```bash
|
||||
docker login registry.michaelschiemer.de -u admin -p <password>
|
||||
```
|
||||
|
||||
### SSH-Verbindung fehlschlägt
|
||||
- Prüfe `SSH_PRIVATE_KEY` Secret (kompletter Inhalt)
|
||||
- Prüfe ob Public Key auf Production-Server ist
|
||||
- Teste SSH-Verbindung manuell:
|
||||
```bash
|
||||
ssh -i ~/.ssh/production deploy@94.16.110.151
|
||||
```
|
||||
188
deployment/docs/status/deployment-summary.md
Normal file
188
deployment/docs/status/deployment-summary.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# Deployment Projekt - Zusammenfassung
|
||||
|
||||
**Stand:** 2025-10-31
|
||||
**Status:** ✅ CI/CD Pipeline vollständig konfiguriert und bereit zum Testen
|
||||
|
||||
---
|
||||
|
||||
## ✅ Was ist fertig?
|
||||
|
||||
### Infrastructure (100% abgeschlossen)
|
||||
|
||||
- ✅ **Traefik** - Reverse Proxy & SSL (Stack 1)
|
||||
- ✅ **PostgreSQL** - Database mit automatischen Backups (Stack 2)
|
||||
- ✅ **Docker Registry** - Private Registry (Stack 3)
|
||||
- ✅ **Gitea** - Git Server mit CI/CD (Stack 4)
|
||||
- ✅ **Monitoring** - Portainer, Grafana, Prometheus (Stack 6)
|
||||
- ✅ **WireGuard VPN** - VPN-Server Setup mit Ansible
|
||||
|
||||
### Application Stack (100% abgeschlossen)
|
||||
|
||||
- ✅ **Application Stack Integration** - In `setup-infrastructure.yml` integriert
|
||||
- ✅ **Environment Template** - `application.env.j2` für automatische Konfiguration
|
||||
- ✅ **Database Migration** - Automatisch nach Deployment
|
||||
- ✅ **Health-Checks** - Integration nach Deployment
|
||||
- ✅ **PostgreSQL Integration** - Verwendet PostgreSQL statt MySQL
|
||||
|
||||
### CI/CD Pipeline (100% konfiguriert)
|
||||
|
||||
- ✅ **Workflows** - Production-Deploy, Secrets-Update, Security-Scan
|
||||
- ✅ **Gitea Runner** - Läuft und ist registriert
|
||||
- ✅ **Secrets** - Alle kritischen Secrets konfiguriert
|
||||
- ✅ **Ansible Integration** - Deployment & Rollback Playbooks
|
||||
- ✅ **Dokumentation** - Umfangreiche Guides vorhanden
|
||||
|
||||
### Dokumentation (95% abgeschlossen)
|
||||
|
||||
- ✅ `CODE_CHANGE_WORKFLOW.md` - Codeänderungen pushen
|
||||
- ✅ `APPLICATION_STACK_DEPLOYMENT.md` - Deployment-Ablauf
|
||||
- ✅ `CI_CD_STATUS.md` - CI/CD Status & Checkliste
|
||||
- ✅ `QUICK_START.md` - Schnellstart-Guide
|
||||
- ✅ `README.md` - Haupt-Dokumentation aktualisiert
|
||||
- ✅ WireGuard Dokumentation
|
||||
- ⚠️ `DEPLOYMENT-STATUS.md` - Sollte final aktualisiert werden
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Was fehlt noch?
|
||||
|
||||
### 1. Pipeline End-to-End testen (KRITISCH)
|
||||
|
||||
**Status:** ⚠️ Ausstehend
|
||||
|
||||
**Was zu tun:**
|
||||
- [ ] Test-Commit pushen oder Workflow manuell triggern
|
||||
- [ ] Alle Jobs verifizieren (Tests, Build, Deploy)
|
||||
- [ ] Deployment auf Production verifizieren
|
||||
- [ ] Health-Check erfolgreich
|
||||
- [ ] Fehler beheben falls notwendig
|
||||
|
||||
**Zeit:** ~15-30 Minuten
|
||||
|
||||
**Schritte:**
|
||||
```bash
|
||||
# Option 1: Test-Commit
|
||||
echo "# Test" >> README.md
|
||||
git add README.md
|
||||
git commit -m "test: CI/CD pipeline test"
|
||||
git push origin main
|
||||
|
||||
# Option 2: Manuell triggern
|
||||
# → https://git.michaelschiemer.de/michael/michaelschiemer/actions
|
||||
# → "Production Deployment Pipeline" → "Run workflow"
|
||||
```
|
||||
|
||||
### 2. Backup-Playbook erstellen (Optional)
|
||||
|
||||
**Status:** ⚠️ Ausstehend
|
||||
|
||||
**Was zu tun:**
|
||||
- [ ] Backup-Playbook für Application Stack erstellen
|
||||
- [ ] PostgreSQL Backup-Integration
|
||||
- [ ] Gitea Data Backup
|
||||
- [ ] Registry Images Backup
|
||||
|
||||
**Dateien:**
|
||||
- `deployment/ansible/playbooks/backup.yml` ❌ Fehlt
|
||||
- `deployment/ansible/playbooks/rollback.yml` ✅ Vorhanden
|
||||
|
||||
### 3. Finale Dokumentation (Optional)
|
||||
|
||||
**Status:** ⚠️ Teilweise
|
||||
|
||||
**Was zu tun:**
|
||||
- [ ] `DEPLOYMENT-STATUS.md` mit finalem Status aktualisieren
|
||||
- [ ] `SETUP-GUIDE.md` finalisieren (optional)
|
||||
|
||||
---
|
||||
|
||||
## 📚 Dokumentation Übersicht
|
||||
|
||||
### Quick Start
|
||||
|
||||
- **`QUICK_START.md`** - Schnellstart-Guide für Deployment
|
||||
- **`CODE_CHANGE_WORKFLOW.md`** - Wie Codeänderungen gepusht werden
|
||||
|
||||
### Detaillierte Guides
|
||||
|
||||
- **`APPLICATION_STACK_DEPLOYMENT.md`** - Detaillierter Deployment-Ablauf
|
||||
- **`CI_CD_STATUS.md`** - CI/CD Pipeline Status & Checkliste
|
||||
- **`SETUP-GUIDE.md`** - Kompletter Setup-Guide
|
||||
- **`DEPLOYMENT-TODO.md`** - Aktuelle TODO-Liste
|
||||
|
||||
### Stack-Dokumentation
|
||||
|
||||
- **`stacks/application/README.md`** - Application Stack Details
|
||||
- **`ansible/README.md`** - Ansible Playbooks Dokumentation
|
||||
- **`gitea-runner/README.md`** - Gitea Runner Setup
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Nächste Schritte (Priorisiert)
|
||||
|
||||
### 1. Pipeline testen (KRITISCH - Nächster Schritt)
|
||||
|
||||
```bash
|
||||
# Test-Commit pushen
|
||||
echo "# Test" >> README.md
|
||||
git add README.md
|
||||
git commit -m "test: CI/CD pipeline test"
|
||||
git push origin main
|
||||
|
||||
# Pipeline beobachten
|
||||
# → https://git.michaelschiemer.de/michael/michaelschiemer/actions
|
||||
```
|
||||
|
||||
**Erfolgskriterien:**
|
||||
- ✅ Alle Jobs erfolgreich (Tests, Build, Deploy)
|
||||
- ✅ Deployment auf Production erfolgreich
|
||||
- ✅ Health-Check erfolgreich
|
||||
- ✅ Application läuft korrekt
|
||||
|
||||
### 2. Backup-Playbook erstellen (Optional)
|
||||
|
||||
```bash
|
||||
cd deployment/ansible/playbooks
|
||||
# Erstelle backup.yml
|
||||
```
|
||||
|
||||
### 3. Finale Verifikation (Optional)
|
||||
|
||||
- Alles nochmal durchgehen
|
||||
- Dokumentation finalisieren
|
||||
- Eventuelle Verbesserungen identifizieren
|
||||
|
||||
---
|
||||
|
||||
## 📊 Projekt-Status
|
||||
|
||||
### Completion Rate
|
||||
|
||||
- **Infrastructure:** 100% ✅
|
||||
- **Application Stack:** 100% ✅
|
||||
- **CI/CD Pipeline:** 100% konfiguriert ✅
|
||||
- **Dokumentation:** 95% ✅
|
||||
- **Testing:** 0% ⚠️ (nächster Schritt!)
|
||||
|
||||
### Gesamt: ~95% abgeschlossen
|
||||
|
||||
**Nächster kritischer Schritt:** Pipeline testen!
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Ready to Deploy!
|
||||
|
||||
**Alles ist bereit für das erste Deployment!**
|
||||
|
||||
Die CI/CD Pipeline ist vollständig konfiguriert:
|
||||
- ✅ Secrets konfiguriert
|
||||
- ✅ Runner läuft
|
||||
- ✅ Workflows vorhanden
|
||||
- ✅ Ansible Playbooks vorhanden
|
||||
- ✅ Dokumentation vorhanden
|
||||
|
||||
**Nächster Schritt:** Einfach einen Test-Commit pushen oder Workflow manuell triggern!
|
||||
|
||||
---
|
||||
|
||||
**Viel Erfolg beim ersten Deployment!** 🎉
|
||||
292
deployment/docs/status/deployment-todo.md
Normal file
292
deployment/docs/status/deployment-todo.md
Normal file
@@ -0,0 +1,292 @@
|
||||
# Deployment TODO - Komplette Implementierung
|
||||
|
||||
**Status**: ✅ ~95% Abgeschlossen - Ready for Testing
|
||||
**Letzte Aktualisierung**: 2025-10-31
|
||||
**Ziel**: Komplettes Deployment-Setup im `deployment/` Ordner
|
||||
|
||||
**🎯 Nächster kritischer Schritt:** Pipeline End-to-End testen!
|
||||
|
||||
---
|
||||
|
||||
## ✅ Bereits Fertig
|
||||
|
||||
### Infrastructure Stacks (deployed via Ansible)
|
||||
- ✅ **Traefik** - Reverse Proxy & SSL
|
||||
- ✅ **PostgreSQL** - Database Stack
|
||||
- ✅ **Docker Registry** - Private Registry
|
||||
- ✅ **Gitea** - Git Server + MySQL + Redis
|
||||
- ✅ **Monitoring** - Portainer + Grafana + Prometheus
|
||||
- ✅ **WireGuard VPN** - VPN Server
|
||||
|
||||
### Ansible Playbooks
|
||||
- ✅ `setup-infrastructure.yml` - Infrastructure Stacks Deployment
|
||||
- ✅ `setup-wireguard.yml` - WireGuard VPN Setup
|
||||
- ✅ `add-wireguard-client.yml` - WireGuard Client hinzufügen
|
||||
- ✅ `deploy-update.yml` - Application Update Deployment
|
||||
- ✅ `rollback.yml` - Rollback zu vorheriger Version
|
||||
- ✅ `setup-production-secrets.yml` - Secrets Deployment
|
||||
- ✅ `setup-ssl-certificates.yml` - SSL Certificate Setup
|
||||
- ✅ `sync-stacks.yml` - Stacks synchronisieren
|
||||
|
||||
### Dokumentation
|
||||
- ✅ `README.md` - Deployment Übersicht
|
||||
- ✅ `SETUP-GUIDE.md` - Komplette Setup-Anleitung
|
||||
- ✅ `DEPLOYMENT-STATUS.md` - Aktueller Status
|
||||
- ✅ `docs/WIREGUARD-SETUP.md` - WireGuard Dokumentation
|
||||
|
||||
---
|
||||
|
||||
## ⏳ Offene Aufgaben
|
||||
|
||||
### 1. Application Stack Integration
|
||||
|
||||
**Status**: ⚠️ Fehlt in `setup-infrastructure.yml`
|
||||
|
||||
**Was fehlt:**
|
||||
- [x] Application Stack zu `setup-infrastructure.yml` hinzufügen ✅
|
||||
- [x] `.env` Template für Application Stack erstellen (`application.env.j2`) ✅
|
||||
- [x] Ansible Playbook/Task für Application Stack Deployment ✅
|
||||
- [x] Database-Migration nach Application Deployment ✅
|
||||
- [x] Health-Check nach Application Deployment ✅
|
||||
|
||||
**Dateien:**
|
||||
- `deployment/stacks/application/docker-compose.yml` ✅ Vorhanden
|
||||
- `deployment/stacks/application/.env.example` ✅ Vorhanden
|
||||
- `deployment/stacks/application/.env` ❌ Fehlt (muss generiert werden)
|
||||
- `deployment/ansible/templates/application.env.j2` ❌ Fehlt (Template für `.env`)
|
||||
- `deployment/ansible/playbooks/setup-infrastructure.yml` ⚠️ Application fehlt
|
||||
|
||||
**Nächste Schritte:**
|
||||
1. Application Stack Deployment Task zu `setup-infrastructure.yml` hinzufügen
|
||||
2. `.env` Template erstellen (mit Passwörtern aus Vault)
|
||||
3. Database-Migration nach Application Start
|
||||
4. Health-Check Integration
|
||||
|
||||
---
|
||||
|
||||
### 2. Application Stack .env Konfiguration
|
||||
|
||||
**Status**: ✅ Erledigt
|
||||
|
||||
**Was erledigt:**
|
||||
- [x] Ansible Template für `.env` Datei erstellt (`application.env.j2`) ✅
|
||||
- [x] Passwörter aus Vault/PostgreSQL .env laden ✅
|
||||
- [x] Domain-Konfiguration aus Inventory ✅
|
||||
- [x] Environment-Variablen aus Vault/Template generieren ✅
|
||||
|
||||
**Dateien:**
|
||||
- `deployment/stacks/application/.env.example` ✅ Vorhanden (angepasst für PostgreSQL)
|
||||
- `deployment/stacks/application/.env` ⚠️ Wird automatisch generiert
|
||||
- `deployment/ansible/templates/application.env.j2` ✅ Erstellt
|
||||
- `deployment/stacks/application/docker-compose.yml` ✅ Angepasst (PostgreSQL statt MySQL)
|
||||
|
||||
---
|
||||
|
||||
### 3. Gitea Runner Setup abschließen
|
||||
|
||||
**Status**: ⏳ Wartet auf Registration Token
|
||||
|
||||
**Was fehlt:**
|
||||
- [ ] Gitea Admin Panel öffnen: https://git.michaelschiemer.de/admin/actions/runners
|
||||
- [ ] Actions in Gitea aktivieren (falls noch nicht geschehen)
|
||||
- [ ] Registration Token abrufen
|
||||
- [ ] Token in `.env` eintragen
|
||||
- [ ] Runner registrieren und starten
|
||||
|
||||
**Dateien:**
|
||||
- `deployment/gitea-runner/.env` ⚠️ Vorhanden, aber Token fehlt
|
||||
- `deployment/gitea-runner/.env.example` ✅ Vorhanden
|
||||
|
||||
**Nächste Schritte:**
|
||||
1. Gitea Actions aktivieren (Admin Panel)
|
||||
2. Runner Registration Token generieren
|
||||
3. Token in `.env` eintragen
|
||||
4. Runner starten: `cd deployment/gitea-runner && docker compose up -d`
|
||||
|
||||
---
|
||||
|
||||
### 4. CI/CD Pipeline finalisieren
|
||||
|
||||
**Status**: ✅ Vollständig konfiguriert - Bereit zum Testen
|
||||
|
||||
**Was fehlt:**
|
||||
- [x] **Gitea Repository Secrets konfigurieren:** ✅
|
||||
- [x] `REGISTRY_USER` (Docker Registry Benutzername) ✅
|
||||
- [x] `REGISTRY_PASSWORD` (Docker Registry Passwort) ✅
|
||||
- [x] `SSH_PRIVATE_KEY` (SSH Private Key für Production-Server) ✅
|
||||
- [ ] `GITEA_TOKEN` (Optional: Für automatische Issue-Erstellung)
|
||||
- [x] **Gitea Runner registrieren:** ✅
|
||||
- [x] Registration Token von Gitea Admin Panel abgerufen ✅
|
||||
- [x] Token in `deployment/gitea-runner/.env` eingetragen ✅
|
||||
- [x] Runner registriert ✅
|
||||
- [x] Runner läuft ✅
|
||||
- [ ] **Pipeline End-to-End testen:**
|
||||
- [ ] Test-Commit pushen oder Workflow manuell triggern
|
||||
- [ ] Alle Jobs erfolgreich (Tests, Build, Deploy)
|
||||
- [ ] Deployment erfolgreich auf Production
|
||||
- [ ] Health-Check erfolgreich
|
||||
|
||||
**Dateien:**
|
||||
- `.gitea/workflows/production-deploy.yml` ✅ Vorhanden
|
||||
- `.gitea/workflows/update-production-secrets.yml` ✅ Vorhanden
|
||||
- `.gitea/workflows/security-scan.yml` ✅ Vorhanden
|
||||
- `deployment/CI_CD_STATUS.md` ✅ Neu erstellt (detaillierte Checkliste)
|
||||
|
||||
**Detaillierte Anleitung:**
|
||||
Siehe `deployment/CI_CD_STATUS.md` für komplette Checkliste und Setup-Anleitung.
|
||||
|
||||
**Nächste Schritte:**
|
||||
1. **Secrets in Gitea konfigurieren:**
|
||||
- Gehe zu: `https://git.michaelschiemer.de/michael/michaelschiemer/settings/secrets/actions`
|
||||
- Füge Secrets hinzu: `REGISTRY_USER`, `REGISTRY_PASSWORD`, `SSH_PRIVATE_KEY`
|
||||
2. **Gitea Runner registrieren:**
|
||||
- Token von: `https://git.michaelschiemer.de/admin/actions/runners`
|
||||
- Konfiguriere `deployment/gitea-runner/.env`
|
||||
- Führe `./register.sh` aus
|
||||
3. **Pipeline testen:**
|
||||
- Workflow manuell triggern oder Test-Commit pushen
|
||||
- Logs beobachten und Fehler beheben
|
||||
|
||||
---
|
||||
|
||||
### 5. Backup & Rollback Scripts
|
||||
|
||||
**Status**: ⚠️ Teilweise vorhanden
|
||||
|
||||
**Was fehlt:**
|
||||
- [ ] Backup-Playbook für Application Stack
|
||||
- [ ] Rollback-Playbook testen und finalisieren
|
||||
- [ ] PostgreSQL Backup-Integration
|
||||
- [ ] Gitea Data Backup
|
||||
- [ ] Registry Images Backup
|
||||
|
||||
**Dateien:**
|
||||
- `deployment/ansible/playbooks/rollback.yml` ✅ Vorhanden
|
||||
- `deployment/stacks/postgresql/scripts/backup.sh` ✅ Vorhanden
|
||||
- `deployment/ansible/playbooks/backup.yml` ❌ Fehlt
|
||||
|
||||
**Nächste Schritte:**
|
||||
1. Backup-Playbook erstellen
|
||||
2. Rollback-Playbook testen
|
||||
3. Backup-Scripte finalisieren
|
||||
4. Automatisierte Backups konfigurieren
|
||||
|
||||
---
|
||||
|
||||
### 6. Deployment Automation (Erledigt ✅)
|
||||
|
||||
**Status**: ✅ Abgeschlossen
|
||||
|
||||
**Was erledigt:**
|
||||
- [x] Alle Deployment-Operationen über Ansible Playbooks ✅
|
||||
- [x] Redundante Scripts entfernt ✅
|
||||
- [x] Dokumentation aktualisiert ✅
|
||||
|
||||
**Dateien:**
|
||||
- `deployment/ansible/playbooks/deploy-update.yml` ✅ Vorhanden
|
||||
- `deployment/ansible/playbooks/rollback.yml` ✅ Vorhanden
|
||||
- `deployment/ansible/playbooks/sync-code.yml` ✅ Vorhanden
|
||||
- `deployment/DEPLOYMENT_COMMANDS.md` ✅ Command-Referenz erstellt
|
||||
|
||||
**Alle Deployment-Operationen werden jetzt direkt über Ansible durchgeführt:**
|
||||
```bash
|
||||
cd deployment/ansible
|
||||
ansible-playbook -i inventory/production.yml playbooks/<playbook>.yml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 7. Dokumentation vervollständigen
|
||||
|
||||
**Status**: ⚠️ Gut, aber einige Updates nötig
|
||||
|
||||
**Was fehlt:**
|
||||
- [ ] `DEPLOYMENT-STATUS.md` aktualisieren (Application Stack Status)
|
||||
- [ ] `README.md` aktualisieren (Application Stack Deployment)
|
||||
- [ ] `SETUP-GUIDE.md` aktualisieren (Application Stack Phase)
|
||||
- [ ] Troubleshooting Guide für Application Stack
|
||||
|
||||
**Dateien:**
|
||||
- `deployment/README.md` ⚠️ Muss aktualisiert werden
|
||||
- `deployment/SETUP-GUIDE.md` ⚠️ Muss aktualisiert werden
|
||||
- `deployment/DEPLOYMENT-STATUS.md` ⚠️ Muss aktualisiert werden
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Priorisierte Reihenfolge
|
||||
|
||||
### ✅ Phase 1: Application Stack Deployment - ABGESCHLOSSEN
|
||||
|
||||
1. ✅ **Application Stack zu setup-infrastructure.yml hinzufügen**
|
||||
- ✅ Task für Application Stack Deployment
|
||||
- ✅ `.env` Template erstellt (`application.env.j2`)
|
||||
- ✅ Database-Migration nach Deployment
|
||||
|
||||
2. ✅ **Application .env Konfiguration**
|
||||
- ✅ Template `application.env.j2` erstellt
|
||||
- ✅ Passwörter aus Vault/PostgreSQL .env laden
|
||||
- ✅ Template in Playbook integriert
|
||||
|
||||
### ✅ Phase 2: CI/CD Setup - ABGESCHLOSSEN
|
||||
|
||||
3. ✅ **Gitea Runner Setup abschließen**
|
||||
- ✅ Token konfiguriert
|
||||
- ✅ Runner läuft und ist registriert
|
||||
|
||||
4. ✅ **CI/CD Pipeline finalisieren**
|
||||
- ✅ Secrets in Gitea konfiguriert
|
||||
- ⚠️ **Pipeline testen** - NÄCHSTER SCHRITT
|
||||
|
||||
### ⚠️ Phase 3: Testing & Finalisierung (NÄCHSTER SCHRITT)
|
||||
|
||||
5. **Pipeline End-to-End testen** ⚠️ **KRITISCH**
|
||||
- Test-Commit pushen oder Workflow manuell triggern
|
||||
- Alle Jobs verifizieren (Tests, Build, Deploy)
|
||||
- Deployment auf Production verifizieren
|
||||
- Health-Check erfolgreich
|
||||
- Fehler beheben falls notwendig
|
||||
|
||||
### Phase 3: Backup & Scripts
|
||||
|
||||
5. **Backup & Rollback Scripts**
|
||||
- Backup-Playbook erstellen
|
||||
- Rollback testen
|
||||
|
||||
6. **Deployment Scripts finalisieren**
|
||||
- Scripts testen und anpassen
|
||||
|
||||
### Phase 4: Dokumentation
|
||||
|
||||
7. **Dokumentation aktualisieren**
|
||||
- README aktualisieren
|
||||
- Status-Dokumente aktualisieren
|
||||
|
||||
---
|
||||
|
||||
## 📋 Quick Checklist
|
||||
|
||||
### Application Stack
|
||||
- [x] Application Stack in `setup-infrastructure.yml` hinzufügen ✅
|
||||
- [x] `.env` Template (`application.env.j2`) erstellen ✅
|
||||
- [x] Database-Migration Task hinzufügen ✅
|
||||
- [x] Health-Check nach Deployment ✅
|
||||
|
||||
### CI/CD
|
||||
- [x] Gitea Runner Token konfigurieren ✅
|
||||
- [x] Runner starten ✅
|
||||
- [x] Secrets in Gitea konfigurieren ✅
|
||||
- [ ] Pipeline testen ⚠️ **NÄCHSTER SCHRITT**
|
||||
|
||||
### Scripts & Backup
|
||||
- [ ] Backup-Playbook erstellen
|
||||
- [ ] Rollback testen
|
||||
- [ ] Deployment-Scripts finalisieren
|
||||
|
||||
### Dokumentation
|
||||
- [ ] README aktualisieren
|
||||
- [ ] SETUP-GUIDE aktualisieren
|
||||
- [ ] DEPLOYMENT-STATUS aktualisieren
|
||||
|
||||
---
|
||||
|
||||
**Nächster Schritt**: Application Stack zu `setup-infrastructure.yml` hinzufügen und `.env` Template erstellen
|
||||
260
deployment/docs/status/improvements.md
Normal file
260
deployment/docs/status/improvements.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# Deployment System - Verbesserungsvorschläge
|
||||
|
||||
**Erstellt:** 2025-01-31
|
||||
**Status:** Vorschläge zur Diskussion
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Gefundene Redundanzen und Verbesserungsmöglichkeiten
|
||||
|
||||
### 1. ❌ **Dokumentations-Redundanz**
|
||||
|
||||
#### Problem:
|
||||
- **38+ Markdown-Dateien** im `deployment/` und `docs/deployment/` Verzeichnis
|
||||
- Viele veraltete Dokumentationsdateien in `docs/deployment/`
|
||||
- Überschneidende Inhalte zwischen mehreren Dateien
|
||||
|
||||
#### Konkrete Redundanzen:
|
||||
- `DEPLOYMENT_SUMMARY.md` vs `DEPLOYMENT-TODO.md` (ähnliche Status-Übersichten)
|
||||
- `NATIVE-WORKFLOW-README.md` (veraltet? bereits durch CI/CD Pipeline ersetzt)
|
||||
- `docs/deployment/*` - Viele veraltete Guides (Swarm, alte Workflows, etc.)
|
||||
|
||||
#### Empfehlung:
|
||||
```bash
|
||||
# Dateien die gelöscht/archiviert werden könnten:
|
||||
- deployment/NATIVE-WORKFLOW-README.md # Durch CI/CD Pipeline ersetzt
|
||||
- docs/deployment/docker-swarm-deployment.md # Swarm nicht mehr verwendet
|
||||
- docs/deployment/DEPLOYMENT_RESTRUCTURE.md # Historisch
|
||||
- docs/deployment/* (viele veraltete Dateien)
|
||||
```
|
||||
|
||||
**Lösung:**
|
||||
- Dokumentation konsolidieren auf:
|
||||
- `README.md` - Haupt-Dokumentation
|
||||
- `QUICK_START.md` - Schnellstart
|
||||
- `DEPLOYMENT_COMMANDS.md` - Command-Referenz
|
||||
- `CODE_CHANGE_WORKFLOW.md` - Workflow-Dokumentation
|
||||
- `SETUP-GUIDE.md` - Setup-Anleitung
|
||||
- Stack-spezifische READMEs in `stacks/*/README.md`
|
||||
|
||||
---
|
||||
|
||||
### 2. ❌ **Playbook-Redundanz: Troubleshooting Playbooks**
|
||||
|
||||
#### Problem:
|
||||
4 separate Playbooks für ähnliche Troubleshooting-Aufgaben:
|
||||
- `check-container-health.yml` - Prüft Health Status
|
||||
- `diagnose-404.yml` - Diagnostiziert 404 Fehler
|
||||
- `fix-container-health-checks.yml` - Fixes Health Checks
|
||||
- `fix-nginx-404.yml` - Fixes Nginx 404
|
||||
|
||||
#### Empfehlung:
|
||||
**Konsolidieren zu einem einzigen Playbook** `troubleshoot.yml` mit Tags:
|
||||
|
||||
```yaml
|
||||
# deployment/ansible/playbooks/troubleshoot.yml
|
||||
---
|
||||
- name: Application Troubleshooting
|
||||
hosts: production
|
||||
gather_facts: yes
|
||||
become: no
|
||||
|
||||
tasks:
|
||||
- name: Check container health
|
||||
include_tasks: tasks/check-health.yml
|
||||
tags: ['health', 'check']
|
||||
|
||||
- name: Diagnose 404 errors
|
||||
include_tasks: tasks/diagnose-404.yml
|
||||
tags: ['404', 'diagnose']
|
||||
|
||||
- name: Fix container health checks
|
||||
include_tasks: tasks/fix-health-checks.yml
|
||||
tags: ['health', 'fix']
|
||||
|
||||
- name: Fix nginx 404
|
||||
include_tasks: tasks/fix-nginx-404.yml
|
||||
tags: ['nginx', '404', 'fix']
|
||||
```
|
||||
|
||||
**Verwendung:**
|
||||
```bash
|
||||
# Nur Diagnose
|
||||
ansible-playbook ... troubleshoot.yml --tags diagnose
|
||||
|
||||
# Nur Fix
|
||||
ansible-playbook ... troubleshoot.yml --tags fix
|
||||
|
||||
# Alles
|
||||
ansible-playbook ... troubleshoot.yml
|
||||
```
|
||||
|
||||
**Vorteile:**
|
||||
- Weniger Redundanz
|
||||
- Einfacher zu warten
|
||||
- Konsistente Struktur
|
||||
|
||||
---
|
||||
|
||||
### 3. ⚠️ **Variablen-Redundanz**
|
||||
|
||||
#### Problem:
|
||||
Jedes Playbook definiert eigene Pfade:
|
||||
```yaml
|
||||
# In vielen Playbooks:
|
||||
vars:
|
||||
app_stack_path: "{{ deploy_user_home }}/deployment/stacks/application"
|
||||
stacks_base_path: "~/deployment/stacks"
|
||||
```
|
||||
|
||||
#### Empfehlung:
|
||||
**Zentrale Variablendefinition** in `group_vars/production.yml`:
|
||||
|
||||
```yaml
|
||||
# deployment/ansible/group_vars/production.yml
|
||||
---
|
||||
# Base paths
|
||||
deploy_user_home: "~"
|
||||
stacks_base_path: "{{ deploy_user_home }}/deployment/stacks"
|
||||
app_stack_path: "{{ stacks_base_path }}/application"
|
||||
backups_path: "{{ deploy_user_home }}/deployment/backups"
|
||||
|
||||
# Registry
|
||||
docker_registry_url: "registry.michaelschiemer.de"
|
||||
app_image: "{{ docker_registry_url }}/framework"
|
||||
app_name: "framework"
|
||||
|
||||
# Health checks
|
||||
health_check_url: "https://michaelschiemer.de/health"
|
||||
max_rollback_versions: 5
|
||||
```
|
||||
|
||||
**Vorteile:**
|
||||
- Einmal definiert, überall verwendbar
|
||||
- Einfacher zu ändern
|
||||
- Konsistenz über alle Playbooks
|
||||
|
||||
---
|
||||
|
||||
### 4. ❓ **Playbook: `sync-stacks.yml`**
|
||||
|
||||
#### Problem:
|
||||
`sync-stacks.yml` synchronisiert Stack-Dateien zu Production, aber:
|
||||
- `setup-infrastructure.yml` deployed die Stacks bereits direkt
|
||||
- Wird wahrscheinlich nicht mehr benötigt?
|
||||
|
||||
#### Empfehlung:
|
||||
**Entweder:**
|
||||
1. **Löschen** wenn nicht mehr verwendet
|
||||
2. **Oder dokumentieren** wann es noch gebraucht wird
|
||||
|
||||
---
|
||||
|
||||
### 5. ❓ **Stack-Redundanz: `postgres/` vs `postgresql/`**
|
||||
|
||||
#### Problem:
|
||||
Es gibt beide Ordner:
|
||||
- `deployment/stacks/postgres/`
|
||||
- `deployment/stacks/postgresql/`
|
||||
|
||||
Einer scheint leer zu sein?
|
||||
|
||||
#### Empfehlung:
|
||||
- Prüfen welcher verwendet wird
|
||||
- Leeren Ordner löschen
|
||||
- Konsistente Namensgebung verwenden
|
||||
|
||||
---
|
||||
|
||||
### 6. ✅ **Playbook: WireGuard Dokumentation**
|
||||
|
||||
#### Positiv:
|
||||
WireGuard hat separate README (`README-WIREGUARD.md`) - das ist gut strukturiert!
|
||||
|
||||
**Könnte als Vorbild dienen** für andere komplexe Features.
|
||||
|
||||
---
|
||||
|
||||
### 7. ⚠️ **Templates: Mehrfache .env Templates**
|
||||
|
||||
#### Problem:
|
||||
- `ansible/templates/application.env.j2`
|
||||
- `ansible/templates/monitoring.env.j2`
|
||||
- Gibt es weitere?
|
||||
|
||||
#### Empfehlung:
|
||||
**Template-Verzeichnis strukturieren:**
|
||||
```
|
||||
ansible/templates/
|
||||
├── env/
|
||||
│ ├── application.env.j2
|
||||
│ ├── monitoring.env.j2
|
||||
│ └── ...
|
||||
└── config/
|
||||
├── wireguard-server.conf.j2
|
||||
└── ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 8. ✅ **Verbesserung: Zentrales Playbook für Common Tasks**
|
||||
|
||||
#### Empfehlung:
|
||||
**Common Tasks als Reusable Roles/Tasks**:
|
||||
|
||||
```yaml
|
||||
# deployment/ansible/roles/common/tasks/verify-stack.yml
|
||||
---
|
||||
- name: Verify stack directory exists
|
||||
stat:
|
||||
path: "{{ stack_path }}"
|
||||
register: stack_dir
|
||||
|
||||
- name: Fail if stack directory doesn't exist
|
||||
fail:
|
||||
msg: "Stack directory not found at {{ stack_path }}"
|
||||
when: not stack_dir.stat.exists
|
||||
```
|
||||
|
||||
**Verwendung in Playbooks:**
|
||||
```yaml
|
||||
- name: Verify application stack
|
||||
include_role:
|
||||
name: common
|
||||
tasks_from: verify-stack
|
||||
vars:
|
||||
stack_path: "{{ app_stack_path }}"
|
||||
```
|
||||
|
||||
**Vorteile:**
|
||||
- DRY (Don't Repeat Yourself)
|
||||
- Konsistenz
|
||||
- Einfacher zu warten
|
||||
|
||||
---
|
||||
|
||||
## 📊 Priorisierte Empfehlungen
|
||||
|
||||
### 🔴 Hoch (sofort umsetzbar):
|
||||
1. **Zentrale Variablen** → `group_vars/production.yml`
|
||||
2. **Dokumentation aufräumen** → Veraltete Dateien löschen/archivieren
|
||||
3. **Stack-Redundanz prüfen** → `postgres/` vs `postgresql/`
|
||||
|
||||
### 🟡 Mittel (bald umsetzen):
|
||||
4. **Troubleshooting Playbooks konsolidieren** → Ein Playbook mit Tags
|
||||
5. **Common Tasks als Roles** → Redundanz reduzieren
|
||||
|
||||
### 🟢 Niedrig (nice to have):
|
||||
6. **Template-Struktur verbessern**
|
||||
7. **Playbook `sync-stacks.yml` prüfen** → Ob noch benötigt
|
||||
|
||||
---
|
||||
|
||||
## 📝 Nächste Schritte
|
||||
|
||||
1. ✅ Redundante Scripts entfernt
|
||||
2. ⏳ Dokumentation aufräumen
|
||||
3. ⏳ Zentrale Variablen erstellen
|
||||
4. ⏳ Troubleshooting Playbooks konsolidieren
|
||||
|
||||
**Soll ich mit der Umsetzung beginnen?**
|
||||
48
deployment/docs/status/next-steps.md
Normal file
48
deployment/docs/status/next-steps.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Git Deployment - Nächste Schritte
|
||||
|
||||
## ✅ Was funktioniert:
|
||||
- Git-Variablen in `.env` gesetzt ✅
|
||||
- Ansible Playbook funktioniert ✅
|
||||
- Container neu gestartet ✅
|
||||
|
||||
## ❌ Was noch fehlt:
|
||||
- **Image enthält noch alte Version** ohne Git-Funktionalität
|
||||
- Environment-Variablen werden nicht geladen
|
||||
|
||||
## 🔧 Lösung:
|
||||
|
||||
### Option 1: Image lokal pushen (Schnell)
|
||||
|
||||
```bash
|
||||
# Im Projekt-Root
|
||||
docker push registry.michaelschiemer.de/framework:latest
|
||||
```
|
||||
|
||||
Dann Container neu starten:
|
||||
```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"
|
||||
```
|
||||
|
||||
### Option 2: Via CI/CD (Empfohlen für Production)
|
||||
|
||||
1. **Commit und Push** deiner Änderungen
|
||||
2. **CI/CD Pipeline** baut automatisch das Image
|
||||
3. **Dann** `sync-code.yml` ausführen
|
||||
|
||||
---
|
||||
|
||||
## 📊 Zusammenfassung
|
||||
|
||||
**Status:** Setup abgeschlossen, Image muss aktualisiert werden
|
||||
|
||||
**Alle Komponenten sind bereit:**
|
||||
- ✅ Entrypoint Script mit Git-Funktionalität
|
||||
- ✅ Dockerfile mit Git + Composer
|
||||
- ✅ Docker Compose mit Git Environment Variables
|
||||
- ✅ Ansible Playbook für Git-Sync
|
||||
- ✅ .env mit Git-Variablen
|
||||
|
||||
**Nur noch:** Image pushen und Container neu starten!
|
||||
Reference in New Issue
Block a user