chore: sync staging workspace
This commit is contained in:
272
deployment/docs/status/ci-cd-status.md
Normal file
272
deployment/docs/status/ci-cd-status.md
Normal file
@@ -0,0 +1,272 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user