Files
michaelschiemer/deployment/CI_CD_STATUS.md
Michael Schiemer c087d372c2 Update Docker Registry URLs to HTTPS endpoint (registry.michaelschiemer.de)
- Replace git.michaelschiemer.de:5000 (HTTP) with registry.michaelschiemer.de (HTTPS)
- Update all Ansible playbooks and configuration files
- Update CI/CD workflows to use HTTPS registry endpoint
- Update Docker Compose files with new registry URL
- Update documentation and scripts

Benefits:
- Secure HTTPS connection (no insecure registry config needed)
- Consistent use of HTTPS endpoint via Traefik
- Better security practices for production deployment
2025-10-31 14:35:39 +01:00

8.0 KiB

CI/CD Pipeline Status

Stand: CI/CD Pipeline ist vollständig konfiguriert und bereit zum Testen!

📖 Dokumentation

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/.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:
    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

  • 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/.env erstellt 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

  1. Test-Workflow ausführen
  2. Fehler beheben falls notwendig
  3. 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_USER und REGISTRY_PASSWORD Secrets
  • Teste Registry-Login manuell:
    docker login registry.michaelschiemer.de -u admin -p <password>
    

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:
    ssh -i ~/.ssh/production deploy@94.16.110.151