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
357 lines
9.0 KiB
Markdown
357 lines
9.0 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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:**
|
|
```bash
|
|
cd deployment/gitea-runner
|
|
docker compose ps
|
|
```
|
|
|
|
**Erwartet:**
|
|
- [ ] `gitea-runner`: Up
|
|
- [ ] `gitea-runner-dind`: Up
|
|
|
|
---
|
|
|
|
## Staging Pipeline Test
|
|
|
|
### Schritt 1: Test-Commit erstellen
|
|
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
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**
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
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:**
|
|
|
|
```bash
|
|
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`
|
|
|