- 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
6.9 KiB
CI/CD Pipeline Testing Guide
Stand: 2025-11-07
Status: Anleitung für End-to-End Pipeline-Tests
Übersicht
Dieses Dokument erklärt, wie die CI/CD Pipeline getestet wird. Die Tests sollten sowohl für Staging als auch für Production durchgeführt werden.
📖 Verwandte Dokumentation:
- Pipeline Test Checklist ⭐ - Detaillierte Schritt-für-Schritt Checkliste
- CI/CD Workflow Guide - Workflow-Dokumentation
- CI/CD Status - Aktueller Status
- Troubleshooting Guide - Probleme und Lösungen
🔧 Test-Scripts:
deployment/scripts/test-pipeline-prerequisites.sh- Prüft alle Voraussetzungen für Pipeline-Tests
Voraussetzungen prüfen
Schnellcheck mit Script:
cd /home/michael/dev/michaelschiemer
./deployment/scripts/test-pipeline-prerequisites.sh
Dieses Script prüft automatisch alle Voraussetzungen und gibt eine Zusammenfassung aus.
1. Secrets konfiguriert
Erforderliche Secrets in Gitea:
- ✅
REGISTRY_USER- Docker Registry Benutzername - ✅
REGISTRY_PASSWORD- Docker Registry Passwort - ✅
SSH_PRIVATE_KEY- SSH Private Key für Production-Server - ✅
ANSIBLE_VAULT_PASSWORD- Ansible Vault Password
Prüfen:
https://git.michaelschiemer.de/michael/michaelschiemer/settings/secrets/actions
2. Gitea Runner läuft
Prüfen:
cd deployment/gitea-runner
docker compose ps
Erwartet:
gitea-runner: Upgitea-runner-dind: Up
In Gitea UI prüfen:
https://git.michaelschiemer.de/admin/actions/runners
Runner sollte als "Idle" oder "Active" angezeigt werden.
3. Application Stack läuft
Prüfen:
ssh deploy@94.16.110.151
cd ~/deployment/stacks/production
docker compose -f docker-compose.base.yml -f docker-compose.production.yml ps
Erwartet:
- Alle Container: Up (healthy)
Staging Pipeline Test
Schritt 1: Test-Commit erstellen
# Auf staging Branch
git checkout staging
git pull origin staging
# Kleine Änderung
echo "# Test CI/CD Pipeline - $(date)" >> README.md
git add README.md
git commit -m "test: CI/CD pipeline test"
git push origin staging
Schritt 2: Pipeline beobachten
Gitea Actions UI:
https://git.michaelschiemer.de/michael/michaelschiemer/actions
Erwartete Jobs:
- changes - Prüft ob Build notwendig ist
- test - Führt Tests aus
- build - Baut Docker Image
- deploy-staging - Deploy zu Staging
Schritt 3: Verifikation
Code-Deployment:
ssh deploy@94.16.110.151
cd /home/deploy/michaelschiemer/current
git log -1 # Sollte Test-Commit zeigen
Composer Dependencies:
docker compose -f docker-compose.base.yml -f docker-compose.production.yml \
exec php test -f /var/www/html/vendor/autoload.php && echo "EXISTS"
Image-Deployment:
docker compose -f docker-compose.base.yml -f docker-compose.production.yml \
ps # Container sollten mit neuem Image laufen
Health-Check:
curl -f https://staging.michaelschiemer.de/health
Schritt 4: Fehler beheben
Falls Fehler auftreten:
- Logs in Gitea Actions UI prüfen
- Container Logs prüfen:
docker compose logs - Siehe Troubleshooting Guide
Production Pipeline Test
Schritt 1: Test-Commit erstellen
Wichtig: Nur nach erfolgreichem Staging-Test!
# Auf main Branch
git checkout main
git pull origin main
# Merge staging (oder direkter Commit für Test)
echo "# Test CI/CD Pipeline Production - $(date)" >> README.md
git add README.md
git commit -m "test: CI/CD pipeline production test"
git push origin main
Schritt 2: Pipeline beobachten
Gitea Actions UI:
https://git.michaelschiemer.de/michael/michaelschiemer/actions
Erwartete Jobs:
- changes - Prüft ob Build notwendig ist
- test - Führt Tests aus
- build - Baut Docker Image
- deploy-production - Deploy zu Production
Schritt 3: Verifikation
Gleiche Checks wie Staging:
- Code-Deployment verifizieren
- Composer Dependencies verifizieren
- Image-Deployment verifizieren
- Health-Check durchführen
Production URL:
curl -f https://michaelschiemer.de/health
Schritt 4: Rollback-Test (Optional)
Falls Deployment fehlschlägt:
cd deployment/ansible
ansible-playbook -i inventory/production.yml \
playbooks/rollback.yml \
--vault-password-file secrets/.vault_pass
Manueller Workflow-Test
Via Gitea UI
Schritte:
- Gehe zu:
https://git.michaelschiemer.de/michael/michaelschiemer/actions - Wähle: "Manual Deployment"
- Klicke: "Run workflow"
- Wähle:
- Environment:
stagingoderproduction - Image Tag: Optional (z.B.
latestodergit-abc1234) - Branch: Optional
- Environment:
- Klicke: "Run workflow"
- Beobachte Logs
Checkliste für erfolgreichen Test
Staging Test
- Test-Commit gepusht
- Pipeline gestartet
- Alle Jobs erfolgreich:
- changes
- test
- build
- deploy-staging
- Code-Deployment erfolgreich
- Composer Dependencies installiert
- Image-Deployment erfolgreich
- Health-Check erfolgreich
- Application läuft korrekt
Production Test
- Staging Test erfolgreich
- Test-Commit auf main gepusht
- Pipeline gestartet
- Alle Jobs erfolgreich:
- changes
- test
- build
- deploy-production
- Code-Deployment erfolgreich
- Composer Dependencies installiert
- Image-Deployment erfolgreich
- Health-Check erfolgreich
- Application läuft korrekt
Bekannte Probleme & Workarounds
Problem: Pipeline startet nicht
Ursache: Runner läuft nicht oder ist nicht registriert
Lösung:
cd deployment/gitea-runner
docker compose restart gitea-runner
# Prüfe Runner-Status in Gitea UI
Problem: Code-Deployment schlägt fehl
Ursache: Git Repository existiert nicht auf Server
Lösung:
# Initial Deployment durchführen
ansible-playbook -i inventory/production.yml \
playbooks/sync-application-code.yml \
--vault-password-file secrets/.vault_pass
Problem: Image-Deployment schlägt fehl
Ursache: Registry Login fehlgeschlagen
Lösung:
- Prüfe
REGISTRY_USERundREGISTRY_PASSWORDSecrets - Teste Registry Login manuell
Problem: Health-Check schlägt fehl
Ursache: Container starten nicht oder Application hat Fehler
Lösung:
- Prüfe Container Status
- Prüfe Container Logs
- Siehe Troubleshooting Guide
Referenz
- CI/CD Workflow Guide - Workflow-Dokumentation
- CI/CD Status - Aktueller Status
- Troubleshooting Guide - Probleme und Lösungen
- Backup & Rollback Guide - Rollback-Prozess