Files
michaelschiemer/deployment/docs/status/ci-cd-status.md

273 lines
8.0 KiB
Markdown

# 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:**
```
<Das Passwort für registry.michaelschiemer.de>
```
*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):**
```
<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:
```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 <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:
```bash
ssh -i ~/.ssh/production deploy@94.16.110.151
```