Files
michaelschiemer/deployment/docs/guides/pipeline-test-checklist.md
Michael Schiemer 36ef2a1e2c
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
fix: Gitea Traefik routing and connection pool optimization
- 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
2025-11-09 14:46:15 +01:00

9.0 KiB

CI/CD Pipeline Test Checklist

Stand: 2025-01-XX
Zweck: Schritt-für-Schritt Checkliste für End-to-End Pipeline-Tests


Vorbereitung

Prerequisites Check ausführen

cd /home/michael/dev/michaelschiemer
./deployment/scripts/test-pipeline-prerequisites.sh

Erwartet: Alle Checks sollten grün sein (Warnings sind OK)

Gitea Secrets verifizieren

URL: https://git.michaelschiemer.de/michael/michaelschiemer/settings/secrets/actions

Erforderliche Secrets:

  • 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 (optional, falls Vault verschlüsselt)

Gitea Runner Status prüfen

URL: https://git.michaelschiemer.de/admin/actions/runners

Erwartet:

  • Runner ist sichtbar als "Idle" oder "Active"
  • Runner Name: dev-runner-01 (oder ähnlich)
  • Runner Labels: ubuntu-latest, ubuntu-22.04, debian-latest

Lokal prüfen:

cd deployment/gitea-runner
docker compose ps

Erwartet:

  • gitea-runner: Up
  • gitea-runner-dind: Up

Staging Pipeline Test

Schritt 1: Test-Commit erstellen

# Auf staging Branch wechseln
git checkout staging
git pull origin staging

# Kleine Änderung machen
echo "# CI/CD Pipeline Test - $(date)" >> README.md
git add README.md
git commit -m "test: CI/CD pipeline staging test"
git push origin staging

Erwartet:

  • Push erfolgreich
  • Keine Git-Fehler

Schritt 2: Pipeline in Gitea Actions beobachten

URL: https://git.michaelschiemer.de/michael/michaelschiemer/actions

Erwartete Jobs (in Reihenfolge):

  1. changes - Determine Build Necessity

    • Job startet innerhalb von 1-2 Minuten
    • Job läuft erfolgreich durch
    • Output zeigt: needs_build=true (oder false wenn nur Docs geändert)
  2. runtime-base - Build Runtime Base Image (nur wenn needs_runtime_build=true)

    • Job startet nach changes
    • Docker Build läuft erfolgreich
    • Image wird zur Registry gepusht
  3. test - Run Tests & Quality Checks (nur wenn needs_build=true)

    • Job startet nach changes
    • Composer Dependencies werden installiert
    • Tests laufen (oder werden übersprungen mit Warnung)
    • Job läuft erfolgreich durch
  4. build - Build Docker Image (nur wenn needs_build=true)

    • Job startet nach runtime-base und test
    • Docker Build läuft erfolgreich
    • Image wird mit Tags gepusht: latest, git-<sha>, <sha>-<timestamp>
    • Output zeigt Image URL
  5. deploy-staging - Auto-deploy to Staging

    • Job startet nach build
    • SSH-Verbindung zum Server erfolgreich
    • Code-Deployment (deploy-application-code.yml) erfolgreich
    • Composer Dependencies Installation erfolgreich
    • Image-Deployment (deploy-image.yml) erfolgreich
    • Health-Check erfolgreich

Gesamtzeit: ~8-15 Minuten

Schritt 3: Deployment auf Staging verifizieren

Code-Deployment:

ssh deploy@94.16.110.151
cd /home/deploy/michaelschiemer/current
git log -1  # Sollte Test-Commit zeigen
git branch  # Sollte auf staging sein

Erwartet:

  • Letzter Commit ist der Test-Commit
  • Branch ist staging

Composer Dependencies:

cd ~/deployment/stacks/staging
docker compose -f docker-compose.base.yml -f docker-compose.staging.yml \
  exec staging-app test -f /var/www/html/vendor/autoload.php && echo "EXISTS"

Erwartet:

  • Output: EXISTS

Image-Deployment:

docker compose -f docker-compose.base.yml -f docker-compose.staging.yml ps

Erwartet:

  • Alle Container: Up (healthy)
  • Image Tag entspricht dem gebauten Image

Health-Check:

curl -f https://staging.michaelschiemer.de/health

Erwartet:

  • HTTP 200 OK
  • JSON Response mit Status

Application Test:

  • Staging URL erreichbar: https://staging.michaelschiemer.de
  • Application läuft korrekt
  • Keine Fehler in Browser Console

Schritt 4: Fehlerbehebung (falls notwendig)

Falls Jobs fehlschlagen:

  1. Logs in Gitea Actions UI prüfen

    • Klicke auf fehlgeschlagenen Job
    • Scrolle durch Logs
    • Suche nach Fehlermeldungen
  2. Container Logs auf Server prüfen

    ssh deploy@94.16.110.151
    cd ~/deployment/stacks/staging
    docker compose -f docker-compose.base.yml -f docker-compose.staging.yml logs
    
  3. Bekannte Probleme:

    • Siehe: deployment/docs/troubleshooting/initial-deployment-issues.md
    • Siehe: deployment/docs/guides/pipeline-testing-guide.md

Production Pipeline Test

⚠️ WICHTIG: Nur nach erfolgreichem Staging-Test durchführen!

Schritt 1: Test-Commit auf main erstellen

# Auf main Branch wechseln
git checkout main
git pull origin main

# Merge staging (oder direkter Commit für Test)
echo "# CI/CD Pipeline Test Production - $(date)" >> README.md
git add README.md
git commit -m "test: CI/CD pipeline production test"
git push origin main

Erwartet:

  • Push erfolgreich
  • Keine Git-Fehler

Schritt 2: Pipeline in Gitea Actions beobachten

URL: https://git.michaelschiemer.de/michael/michaelschiemer/actions

Erwartete Jobs (in Reihenfolge):

  1. changes - Determine Build Necessity

    • Job startet innerhalb von 1-2 Minuten
    • Job läuft erfolgreich durch
  2. runtime-base - Build Runtime Base Image (falls notwendig)

    • Job startet nach changes
    • Docker Build läuft erfolgreich
  3. test - Run Tests & Quality Checks

    • Job startet nach changes
    • Tests laufen erfolgreich
  4. build - Build Docker Image

    • Job startet nach runtime-base und test
    • Docker Build läuft erfolgreich
    • Image wird zur Registry gepusht
  5. deploy-production - Auto-deploy to Production

    • Job startet nach build
    • SSH-Verbindung erfolgreich
    • Code-Deployment erfolgreich
    • Composer Dependencies Installation erfolgreich
    • Image-Deployment erfolgreich
    • Health-Check erfolgreich

Gesamtzeit: ~8-15 Minuten

Schritt 3: Deployment auf Production verifizieren

Code-Deployment:

ssh deploy@94.16.110.151
cd /home/deploy/michaelschiemer/current
git log -1  # Sollte Test-Commit zeigen
git branch  # Sollte auf main sein

Erwartet:

  • Letzter Commit ist der Test-Commit
  • Branch ist main

Composer Dependencies:

cd ~/deployment/stacks/production
docker compose -f docker-compose.base.yml -f docker-compose.production.yml \
  exec php test -f /var/www/html/vendor/autoload.php && echo "EXISTS"

Erwartet:

  • Output: EXISTS

Image-Deployment:

docker compose -f docker-compose.base.yml -f docker-compose.production.yml ps

Erwartet:

  • Alle Container: Up (healthy)
  • Image Tag entspricht dem gebauten Image

Health-Check:

curl -f https://michaelschiemer.de/health

Erwartet:

  • HTTP 200 OK
  • JSON Response mit Status

Application Test:

  • Production URL erreichbar: https://michaelschiemer.de
  • Application läuft korrekt
  • Keine Fehler in Browser Console

Schritt 4: Rollback-Test (Optional)

Falls Deployment fehlschlägt oder Probleme auftreten:

cd deployment/ansible
ansible-playbook -i inventory/production.yml \
  playbooks/rollback.yml \
  --vault-password-file secrets/.vault_pass

Erwartet:

  • Rollback erfolgreich
  • Vorherige Version läuft wieder

Test-Zusammenfassung

Staging Test

  • Alle Jobs erfolgreich
  • Code-Deployment erfolgreich
  • Composer Dependencies installiert
  • Image-Deployment erfolgreich
  • Health-Check erfolgreich
  • Application läuft korrekt

Production Test

  • Alle Jobs erfolgreich
  • Code-Deployment erfolgreich
  • Composer Dependencies installiert
  • Image-Deployment erfolgreich
  • Health-Check erfolgreich
  • Application läuft korrekt

Nächste Schritte nach erfolgreichem Test

  1. Dokumentation aktualisieren

    • Status-Dokumente aktualisieren
    • Bekannte Probleme dokumentieren
    • Testergebnisse dokumentieren
  2. Backup-Playbook testen

    • Siehe: deployment/docs/guides/backup-and-rollback-guide.md
  3. Monitoring verifizieren

    • Health-Checks funktionieren
    • Logs sind verfügbar
    • Metriken werden gesammelt

Troubleshooting

Pipeline startet nicht

  • Prüfe Gitea Runner Status
  • Prüfe Workflow-Datei Syntax
  • Prüfe Branch-Trigger

Registry Login fehlschlägt

  • Prüfe REGISTRY_USER und REGISTRY_PASSWORD Secrets
  • Teste Registry-Login manuell

SSH-Verbindung fehlschlägt

  • Prüfe SSH_PRIVATE_KEY Secret
  • Prüfe SSH-Zugriff manuell

Health-Check fehlschlägt

  • Prüfe Container Status
  • Prüfe Container Logs
  • Prüfe Application Logs

Weitere Hilfe:

  • deployment/docs/troubleshooting/initial-deployment-issues.md
  • deployment/docs/guides/pipeline-testing-guide.md