273 lines
8.0 KiB
Markdown
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](CODE_CHANGE_WORKFLOW.md)** - Anleitung: Wie Codeänderungen gepusht und deployed werden
|
|
- **[Application Stack Deployment](APPLICATION_STACK_DEPLOYMENT.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 git.michaelschiemer.de:5000>
|
|
```
|
|
*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 git.michaelschiemer.de:5000 -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
|
|
```
|