fix: Gitea Traefik routing and connection pool optimization
Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled

- Remove middleware reference from Gitea Traefik labels (caused routing issues)
- Optimize Gitea connection pool settings (MAX_IDLE_CONNS=30, authentication_timeout=180s)
- Add explicit service reference in Traefik labels
- Fix intermittent 504 timeouts by improving PostgreSQL connection handling

Fixes Gitea unreachability via git.michaelschiemer.de
This commit is contained in:
2025-11-09 14:46:15 +01:00
parent 85c369e846
commit 36ef2a1e2c
1366 changed files with 104925 additions and 28719 deletions

View File

@@ -90,20 +90,35 @@ Die Logs zeigen einige Verbindungsfehler (connection refused, 502 Bad Gateway),
### 3. Ansible Vault Password Handling
**Status**: ⚠️ Workflow nutzt Vault, aber kein Secret dafür
**Status**: Workflows verwenden ANSIBLE_VAULT_PASSWORD Secret
**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
**Implementiert:**
- `ANSIBLE_VAULT_PASSWORD` wird als Gitea Secret verwendet
- ✅ Workflows erstellen automatisch Vault Password File aus Secret
- ✅ Fallback: Leeres Password File wenn Secret nicht gesetzt ist
**Lösung:**
- [ ] Optional: `ANSIBLE_VAULT_PASSWORD` als Secret hinzufügen (nur wenn automatisiert)
- [ ] Oder: Manuelles Eingeben beim Workflow-Trigger ist ausreichend
**Konfiguration:**
- Secret Name: `ANSIBLE_VAULT_PASSWORD`
- Verwendung: Workflows erstellen `/tmp/vault_pass` aus Secret
- Optional: Falls Secret nicht gesetzt, wird leeres Password File verwendet (für nicht-verschlüsselte Vaults)
---
### 4. Pipeline End-to-End testen
### 4. Code-Deployment Integration
**Status**: ✅ Code-Deployment via Ansible in Workflows integriert
**Implementiert:**
-`deploy-application-code.yml` wird in Workflows verwendet
-`install-composer-dependencies.yml` wird nach Code-Deployment ausgeführt
-`deploy-image.yml` wird für Image-Deployment verwendet
- ✅ Production Deployment Workflow verwendet Ansible statt direkter SSH-Befehle
**Workflows aktualisiert:**
-`.gitea/workflows/build-image.yml` - Staging & Production Auto-Deploy
-`.gitea/workflows/manual-deploy.yml` - Manuelles Deployment
### 5. Pipeline End-to-End testen
**Status**: ⚠️ Pipeline ist definiert, aber noch nicht getestet
@@ -144,6 +159,7 @@ Die Logs zeigen einige Verbindungsfehler (connection refused, 502 Bad Gateway),
- [x] `REGISTRY_USER` ✅
- [x] `REGISTRY_PASSWORD` ✅
- [x] `SSH_PRIVATE_KEY` ✅
- [x] `ANSIBLE_VAULT_PASSWORD` ✅ (für automatisiertes Deployment)
- [ ] `GITEA_TOKEN` (optional)
### Gitea Runner
@@ -153,14 +169,22 @@ Die Logs zeigen einige Verbindungsfehler (connection refused, 502 Bad Gateway),
- [x] Runner läuft (`docker compose up -d`) ✅
- [ ] Runner sichtbar in Gitea UI als "Idle" oder "Active" (bitte manuell prüfen)
### Code-Deployment Integration
- [x] `deploy-application-code.yml` in Workflows integriert ✅
- [x] `install-composer-dependencies.yml` in Workflows integriert ✅
- [x] `deploy-image.yml` in Workflows integriert ✅
- [x] Production Deployment Workflow auf Ansible umgestellt ✅
### Pipeline-Test
- [ ] Test-Commit gepusht oder Workflow manuell getriggert
- [ ] Alle Jobs erfolgreich:
- [ ] Tests
- [ ] Build
- [ ] Deploy
- [ ] Code-Deployment (Git)
- [ ] Composer Dependencies
- [ ] Image-Deployment
- [ ] Health-Check
- [ ] Deployment erfolgreich auf Production
- [ ] Health-Check erfolgreich
- [ ] Application läuft korrekt
### Dokumentation
@@ -180,7 +204,13 @@ Die Logs zeigen einige Verbindungsfehler (connection refused, 502 Bad Gateway),
**Status:** ✅ Abgeschlossen
- Runner läuft und ist registriert
### Phase 3: Pipeline-Test (NÄCHSTER SCHRITT)
### Phase 3: Code-Deployment Integration
**Status:** ✅ Abgeschlossen
- Code-Deployment via Ansible in Workflows integriert
- Production Deployment Workflow auf Ansible umgestellt
- Ansible Vault Password Handling implementiert
### Phase 4: Pipeline-Test (NÄCHSTER SCHRITT)
**Status:** ⚠️ Ausstehend
1. Test-Workflow ausführen
2. Fehler beheben falls notwendig
@@ -205,14 +235,25 @@ cp .env.example .env
docker compose up -d
```
### Pipeline manuell triggern (NÄCHSTER SCHRITT)
### Pipeline testen (NÄCHSTER SCHRITT)
**Vorbereitung:**
```bash
# Prüfe alle Voraussetzungen
./deployment/scripts/test-pipeline-prerequisites.sh
```
**Detaillierte Test-Anleitung:**
Siehe [Pipeline Test Checklist](../guides/pipeline-test-checklist.md) für Schritt-für-Schritt Anleitung.
**Pipeline manuell triggern:**
```
1. Gehe zu: https://git.michaelschiemer.de/michael/michaelschiemer/actions
2. Wähle: "Production Deployment Pipeline"
2. Wähle: "Build & Deploy Image"
3. Klicke: "Run workflow"
4. Wähle Branch: main
4. Wähle Branch: staging (für Staging-Test) oder main (für Production-Test)
5. Optionale Einstellungen:
- skip_tests: false (Tests sollen laufen)
- force_build: false (nur bei Bedarf)
6. Klicke: "Run workflow"
7. Beobachte Logs und prüfe jeden Schritt
```
@@ -228,12 +269,15 @@ https://git.michaelschiemer.de/admin/actions/runners
## ✅ Aktueller Status
**CI/CD Pipeline ist vollständig konfiguriert!**
**CI/CD Pipeline ist vollständig konfiguriert und integriert!**
- ✅ Secrets konfiguriert
- ✅ Runner läuft und ist registriert
- ✅ Workflows sind vorhanden
- ⚠️ **Nächster Schritt:** Pipeline testen!
- ✅ Code-Deployment via Ansible integriert
- ✅ Production Deployment Workflow auf Ansible umgestellt
- ✅ Ansible Vault Password Handling implementiert
- ⚠️ **Nächster Schritt:** Pipeline testen! (siehe [Pipeline Testing Guide](../guides/pipeline-testing-guide.md))
**Ready to Deploy:** Die Pipeline kann jetzt getestet werden. Alle Voraussetzungen sind erfüllt.