8.0 KiB
CI/CD Pipeline Status
Stand: ✅ CI/CD Pipeline ist vollständig konfiguriert und bereit zum Testen!
📖 Dokumentation
- Code Changes Workflow - Anleitung: Wie Codeänderungen gepusht und deployed werden
- Application Stack Deployment - 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:
<Das Passwort für registry.michaelschiemer.de>
Zu finden in: deployment/stacks/registry/auth/htpasswd oder manuell gesetzt
SSH_PRIVATE_KEY:
# SSH Key Inhalt anzeigen
cat ~/.ssh/production
Kompletter Inhalt der Datei inkl. -----BEGIN OPENSSH PRIVATE KEY----- und -----END OPENSSH PRIVATE KEY-----
GITEA_TOKEN (optional):
<Gitea Personal Access Token mit repo-Berechtigung>
2. Gitea Runner registrieren und starten
Status: ✅ Runner läuft bereits
Verifiziert:
- ✅ Runner ist registriert (
data/.runnerexistiert) - ✅ Runner Container läuft (
gitea-runnerist "Up") - ✅ Docker-in-Docker Container läuft (
gitea-runner-dindist "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.ymlbenö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_PASSWORDals 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:
- Stelle sicher dass alle Secrets konfiguriert sind
- Stelle sicher dass Runner läuft
- Test-Commit erstellen:
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 - Oder: Workflow manuell triggern:
- Gehe zu:
https://git.michaelschiemer.de/michael/michaelschiemer/actions - Wähle "Production Deployment Pipeline"
- Klicke "Run workflow"
- Gehe zu:
- 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
- Gitea Repository Secrets konfiguriert: ✅
REGISTRY_USER✅REGISTRY_PASSWORD✅SSH_PRIVATE_KEY✅GITEA_TOKEN(optional)
Gitea Runner
- Runner Registration Token von Gitea abgerufen ✅
deployment/gitea-runner/.enverstellt und konfiguriert ✅- Runner registriert ✅
- 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
- Test-Workflow ausführen
- Fehler beheben falls notwendig
- Production-Deployment verifizieren
📝 Quick Reference
Secrets Setup
# Secrets in Gitea konfigurieren:
https://git.michaelschiemer.de/michael/michaelschiemer/settings/secrets/actions
Runner Setup
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_USERundREGISTRY_PASSWORDSecrets - Teste Registry-Login manuell:
docker login registry.michaelschiemer.de -u admin -p <password>
SSH-Verbindung fehlschlägt
- Prüfe
SSH_PRIVATE_KEYSecret (kompletter Inhalt) - Prüfe ob Public Key auf Production-Server ist
- Teste SSH-Verbindung manuell:
ssh -i ~/.ssh/production deploy@94.16.110.151