Files
Orchestrator/bahn/O2C-Harness/self-review.md
T
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

211 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Self-Review & Pipeline-Überwachung
## Code-Review vor Push
Vor dem Push den eigenen Code reviewen:
- Naming Conventions eingehalten?
- Keine TODOs oder Debug-Code?
- Tests vollständig?
- Doku aktuell?
## Pipeline-Überwachung (Pflicht nach jedem Push)
Nach JEDEM `git push` die Pipeline überwachen mit Polling:
```bash
# Pipeline-Status abfragen (wiederholen bis nicht mehr "running")
glab ci status
# Wenn "running" → 30 Sekunden warten und erneut prüfen
sleep 30
glab ci status
# Bei "failed" → Logs des fehlgeschlagenen Jobs anzeigen
glab ci view
```
### Polling-Schleife (so implementieren):
```bash
# Solange "running" → weiter pollen
while true; do
STATUS=$(glab ci status 2>&1)
echo "$STATUS"
if echo "$STATUS" | grep -q "passed"; then
echo "Pipeline erfolgreich!"
break
elif echo "$STATUS" | grep -qE "failed|canceled"; then
echo "Pipeline fehlgeschlagen abbrechen und fixen"
glab ci cancel
glab ci view
break
fi
sleep 30
done
```
### WICHTIG:
- `glab ci status` funktioniert OHNE `--wait` Flag
- NICHT die GitLab API direkt aufrufen (kein Zugriff auf Web-UI)
- Einfach `glab ci status` wiederholt aufrufen mit `sleep 30` dazwischen
## Bei Pipeline-Fehler
1. `glab ci view` Fehlgeschlagenen Job identifizieren
2. Fehler analysieren
3. Fix committen
4. Erneut pushen
5. Pipeline erneut überwachen
## Deployment-Stages
| Branch | Umgebung | Automatisch? |
|--------|----------|-------------|
| Feature-Branch | Preview (Dev) | ✅ Ja |
| main | Produktion | ✅ Ja (nach Merge) |
## Pipeline-Fehler diagnostizieren
### Logs lesen mit glab
```bash
# Jobs der Pipeline auflisten
glab api "projects/:id/pipelines/$(glab ci status 2>&1 | grep -oP '#\K[0-9]+')/jobs"
# Job-Log lesen (Job-ID aus obigem Output)
glab api "projects/:id/jobs/{job_id}/trace"
# Wenn keine Jobs vorhanden (leeres Array []):
# → Kein Runner verfügbar ODER .gitlab-ci.yml fehlerhaft
```
### Häufige Fehler
| Symptom | Ursache | Fix |
|---------|---------|-----|
| Pipeline failed, keine Jobs | YAML-Fehler | `.gitlab-ci.yml` prüfen |
| Job failed: "image not found" | Falsches Docker-Image | DB Container Lib Image nutzen |
## Um Hilfe bitten (statt endlos loopen)
Wenn du nach **3 Versuchen** ein Problem nicht lösen kannst:
1. **STOPPE** nicht weiter versuchen
2. **Dokumentiere** das Problem klar in einer Nachricht:
- Was du versucht hast
- Welcher Fehler auftritt
- Was du als Ursache vermutest
3. **Schreibe in die Konsole**: `echo "HELP: <deine Frage>"`
Beispiel:
```
Ich komme nicht weiter. Die Pipeline schlägt fehl:
- Symptom: Pipeline failed, keine Jobs werden gestartet
- Versucht: .gitlab-ci.yml angepasst (3x)
- Frage: Wie sieht die korrekte .gitlab-ci.yml für dieses Projekt aus?
```
### Wann um Hilfe bitten:
- Pipeline-Fehler nach 3 Fix-Versuchen
- Zugriffsprobleme (401/403/404)
- Unklare Anforderungen
- Fehlende Credentials oder Konfiguration
- Tool funktioniert nicht wie erwartet
### NICHT endlos loopen bei:
- Gleichem Fehler der sich wiederholt
- Timeout/Netzwerk-Problemen
- Fehlenden Berechtigungen
## Pipeline manuell triggern
Wenn nach einem Push keine neue Pipeline startet (alter SHA in `glab ci status`):
```bash
# Pipeline manuell für aktuellen Branch triggern
glab ci create --ref $(git branch --show-current)
```
Dann erneut mit `glab ci status` überwachen.
## Kein Runner verfügbar
Wenn Pipeline failed mit 0 Jobs oder Jobs ewig "pending" bleiben:
- Ursache: Kein Runner mit passenden Tags im Projekt
- Das ist ein Infrastruktur-Problem, kein Code-Problem
- In der MR-Beschreibung vermerken: "Pipeline benötigt Runner mit Tags: group-runner, kubernetes"
- Nicht endlos versuchen zu fixen
## MR-Pipeline überwachen
- MR-Pipeline hat alle Jobs (lint, test, build, deploy)
**Ablauf:**
1. Push auf Feature-Branch
2. MR erstellen (`glab mr create ...`)
3. DANN Pipeline überwachen: `glab ci status` (zeigt MR-Pipeline)
4. Bei Fehler: `glab ci list` → Job-Logs lesen → fixen → pushen
5. MR-Pipeline startet automatisch neu nach Push
**Job-Logs lesen:**
```bash
# Fehlgeschlagene Jobs finden
glab ci list
# Trace eines bestimmten Jobs (non-interaktiv)
glab api "projects/:id/jobs/{job_id}/trace" | tail -50
```
### Signal für Hilfe
Wenn du nicht weiterkommst, schreibe EXAKT dieses Format in die Shell:
```bash
echo "HELP: Pipeline failed mit 0 Jobs - wie soll die .gitlab-ci.yml aussehen?"
```
Das `HELP:` Prefix wird vom Orchestrator erkannt und signalisiert dem Benutzer im Dashboard, dass du Hilfe brauchst. Warte danach auf eine Antwort.
### Pipeline-Status loggen
Beim Überwachen der Pipeline den Status in die Konsole schreiben, damit das Dashboard den Fortschritt zeigt:
```bash
echo "PROMPT: Pipeline überwachen - warte auf MR-Pipeline"
# ... polling ...
echo "PROMPT: Pipeline grün - alle Jobs bestanden"
# oder
echo "PROMPT: Pipeline fehlgeschlagen - Job lint_scm_info failed"
```
### Fortschritt und ETA loggen
Nach jedem abgeschlossenen Arbeitsschritt den Fortschritt melden:
```bash
echo "PROGRESS: 20% - Issues angelegt, starte Implementierung (ETA: 8min)"
echo "PROGRESS: 50% - Backend fertig, starte Frontend (ETA: 5min)"
echo "PROGRESS: 70% - Tests geschrieben, starte Quality Gates (ETA: 3min)"
echo "PROGRESS: 85% - Gepusht, MR erstellt, warte auf Pipeline (ETA: 2min)"
echo "PROGRESS: 100% - Fertig"
```
Format: `PROGRESS: {prozent}% - {was gerade passiert} (ETA: {geschätzte Restzeit})`
Schätze die ETA basierend auf:
- Anzahl verbleibender Issues/Aufgaben
- Bisherige Dauer pro Schritt
- Komplexität der verbleibenden Arbeit
### Referenzen in Logs
Wenn du Issues, MRs oder Pipelines erstellst/referenzierst, gib die URL oder Referenz mit an:
```bash
echo "PROMPT: Issues angelegt: #1 #2 #3 #4 in https://git.tech.rz.db.de/group/project"
echo "PROMPT: MR erstellt: https://git.tech.rz.db.de/group/project/-/merge_requests/1"
echo "PROMPT: Pipeline überwachen: https://git.tech.rz.db.de/group/project/-/pipelines/12345"
```
Das Dashboard macht URLs und #Issue/!MR-Referenzen automatisch klickbar.