# 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:** ``` ``` *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):** ``` ``` --- ### 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 ``` ### 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 ```