CI/CD Skills
Fähigkeiten zur Lösung von Problemen mit CI/CD-Pipelines.
Auslösebedingungen
- „CI ist fehlgeschlagen“, „GitHub Actions ist fehlgeschlagen“
- „Build-Fehler“, „Tests bestehen nicht“
- „Repariere die Pipeline“
Funktionsdetails
| Funktion | Details | Auslöser |
|---|---|---|
| Fehleranalyse | Siehe references/analyzing-failures.md | „Logs anzeigen“, „Ursache untersuchen“ |
| Testkorrektur | Siehe references/fixing-tests.md | „Tests reparieren“, „Lösungsvorschlag geben“ |
Ausführungsschritte
- Test vs. Implementierung Entscheidung (Schritt 0)
- Benutzerabsicht klassifizieren (Analyse oder Korrektur)
- Komplexität bewerten (siehe unten)
- Passende Referenzdatei aus obigen „Funktionsdetails“ lesen oder ci-cd-fixer Sub-Agent starten
- Ergebnis überprüfen und bei Bedarf erneut ausführen
Schritt 0: Test vs. Implementierungsentscheidung (Qualitätstor)
Bei CI-Fehlschlägen zuerst die Ursache eingrenzen:
CI-Fehlermeldung
↓
┌─────────────────────────────────────────┐
│ Test vs. Implementierungsentscheidung│
├─────────────────────────────────────────┤
│ Fehlerursache analysieren: │
│ ├── Implementierung fehlerhaft → Implementierung korrigieren│
│ ├── Tests veraltet → Benutzer bestätigen lassen │
│ └── Umgebungsproblem → Umgebung korrigieren │
└─────────────────────────────────────────┘
Verbotene Handlungen (Manipulationsschutz)
⚠️ Verbotene Handlungen bei CI-Fehlschlägen
Folgende „Lösungen“ sind verboten:
| Verboten | Beispiel | Richtige Vorgehensweise |
|----------|----------|-------------------------|
| Tests überspringen | `it.skip(...)` | Implementierung korrigieren |
| Assertions löschen | `expect()` entfernen | Erwartungswerte prüfen |
| CI-Check umgehen | `continue-on-error` | Grundursache beheben |
| Lint-Regeln aufweichen | `eslint-disable` | Code korrigieren |
Entscheidungsablauf
🔴 CI ist fehlgeschlagen
**Entscheidung erforderlich:**
1. **Implementierung fehlerhaft** → Implementierung korrigieren ✅
2. **Erwartungswerte in Tests veraltet** → Benutzer um Bestätigung bitten
3. **Umgebungsproblem** → Umgebungskonfiguration korrigieren
⚠️ Manipulation von Tests (Überspringen, Assertions löschen) ist verboten
Welcher Fall liegt vor?
Wenn Zustimmung erforderlich ist
Wenn Test-/Konfigurationsänderungen unvermeidlich sind:
## 🚨 Zustimmungsanforderung für Test-/Konfigurationsänderungen
### Grund
[Warum diese Änderung notwendig ist]
### Änderungsinhalt
[Diff]
### Alternativen geprüft
- [ ] Wurde geprüft, ob die Implementierung korrigiert werden kann?
Warten auf explizite Zustimmung des Benutzers
Nutzung erweiterter Git-Log-Flags (CC 2.1.49+)
Zur Identifizierung des fehlerverursachenden Commits bei CI-Fehlschlägen werden strukturierte Logs verwendet.
Identifizierung des verursachenden Commits
# Strukturierte Commit-Analyse
git log --format="%h|%s|%an|%ad" --date=short -10
# Zeitliche Analyse mit topologischer Ordnung
git log --topo-order --oneline -20
# Zuordnung von geänderten Dateien und Ursachen
git log --raw --oneline -5
Hauptanwendungsfälle
| Zweck | Flag | Wirkung |
|---|---|---|
| Fehlerursache identifizieren | `--format="%h | %s"` |
| Zeitliche Verfolgung | --topo-order | Verfolgung unter Berücksichtigung der Merge-Reihenfolge |
| Änderungsauswirkung verstehen | --raw | Detaillierte Dateiänderungen |
| Merge-freie Analyse | --cherry-pick --no-merges | Nur tatsächliche Commits extrahieren |
Ausgabebeispiel
🔍 CI-Fehlerursachenanalyse
Letzte Commits (strukturiert):
| Hash | Betreff | Autor | Datum |
|------|---------|-------|-------|
| a1b2c3d | feat: update API | Alice | 2026-02-04 |
| e4f5g6h | test: add tests | Bob | 2026-02-03 |
Geänderte Dateien (--raw):
├── src/api/endpoint.ts (Geändert) ← Typfehler aufgetreten
├── tests/api.test.ts (Geändert)
└── package.json (Geändert)
→ Commit a1b2c3d ist sehr wahrscheinlich die Ursache
Typfehler: src/api/endpoint.ts:42
Sub-Agent-Koordination
Wenn die folgenden Bedingungen erfüllt sind, wird ci-cd-fixer über das Task-Tool gestartet:
- Der Zyklus „Korrigieren → Erneut ausführen → Fehlschlagen“ tritt 2 Mal oder öfter auf
- Oder der Fehler erstreckt sich über mehrere Dateien (komplexer Fall)
Startmuster:
Task tool:
subagent_type="ci-cd-fixer"
prompt="Bitte CI-Fehler diagnostizieren und beheben. Fehlerlog: {error_log}"
ci-cd-fixer arbeitet sicherheitsorientiert (Standard: dry-run-Modus).
Einzelheiten siehe agents/ci-cd-fixer.md.
Für VibeCoder
🔧 Wie man sagt, dass CI kaputt ist
1. **„CI ist rot“ / „CI ist fehlgeschlagen“**
- Automatische Tests sind fehlgeschlagen
2. **„Warum schlägt es fehl?“**
- Ursache soll untersucht werden
3. **„Repariere es“**
- Automatischer Korrekturversuch
💡 Wichtig: Korrekturen, die Tests „austricksen“, sind verboten
- ❌ Tests löschen oder überspringen
- ⭕ Code korrekt reparieren
Wenn du denkst: „Der Test scheint falsch zu sein“,
dann frage erst nach, bevor du entscheidest.