feat(skills): add mandatory linting gate before commits and PRs
- gitea-implementierung: lint gate (PHP/CSS/HTML) as first quality gate step - gitea-fix-refactoring: lint gate before every fix commit - gitea-merge-release: lint gate before PR creation - All gates abort on failure (exit code != 0)
This commit is contained in:
@@ -30,10 +30,43 @@ curl -s -X POST "https://git.home.kies-media.de/api/v1/repos/<owner>/<repo>/pull
|
||||
- PR-Beschreibung vollständig ausfüllen
|
||||
- Labels und Assignees setzen
|
||||
|
||||
### Main-Stand prüfen & Rebase
|
||||
Bevor PR erstellt wird, prüfen ob `main` neue Commits hat:
|
||||
```bash
|
||||
git fetch origin
|
||||
git log --oneline HEAD..origin/main
|
||||
```
|
||||
Falls ja, Feature Branch auf aktuellen main rebasen:
|
||||
```bash
|
||||
git rebase origin/main
|
||||
git push --force-with-lease
|
||||
```
|
||||
Stellt sicher dass der PR konfliktfrei mergeable ist.
|
||||
|
||||
### Linting-Gate (PFLICHT vor PR-Erstellung)
|
||||
|
||||
**Vor JEDEM PR müssen ALLE konfigurierten Linter erfolgreich durchlaufen.**
|
||||
Falls ein Linter fehlschlägt: **PR abbrechen**, Fehler beheben, Linting wiederholen.
|
||||
|
||||
```bash
|
||||
# PHP Syntax Check
|
||||
find . -name "*.php" -not -path "*/vendor/*" -exec php -l {} \; 2>&1 | grep -v "No syntax errors"
|
||||
|
||||
# CSS Lint (stylelint)
|
||||
npx stylelint "**/*.css" --config .stylelintrc.json --allow-empty-input
|
||||
|
||||
# HTML Lint (htmlhint) – nur .html Dateien, nicht .php
|
||||
npx htmlhint "**/*.html" --config .htmlhintrc --ignore "**/*.php"
|
||||
|
||||
# Projekt-spezifische Linter (falls vorhanden)
|
||||
npm run lint
|
||||
```
|
||||
**Jeder Linter muss Exit-Code 0 zurückgeben. Sonst: KEIN PR erstellen.**
|
||||
|
||||
### Merge-Konflikte lösen
|
||||
- `main` in Feature Branch mergen
|
||||
- Falls beim Rebase Konflikte auftreten
|
||||
- Konflikte manuell auflösen
|
||||
- Sicherstellen dass Tests noch grün
|
||||
- `git rebase --continue`
|
||||
- Bei komplexen Konflikten: Martin involvieren
|
||||
|
||||
### Release Notes erstellen
|
||||
@@ -81,10 +114,14 @@ git push origin v<version>
|
||||
|
||||
## Ausgang
|
||||
- PR erstellt und Martin informiert
|
||||
- **Label `ReadyForMerge` gesetzt** (kumulativ)
|
||||
- Warte auf Martins Merge-Freigabe
|
||||
- Nach Freigabe: ⏩ Abnahme- & Validierungs-Agent (Phase 6)
|
||||
- Zeit-Tracking: Dauer der Phase dokumentieren
|
||||
|
||||
## Regeln
|
||||
- **NIEMALS** ohne Martins Freigabe mergen
|
||||
- **NIEMALS** direkt auf `main` pushen
|
||||
- Release Notes IMMER vor dem Merge erstellen
|
||||
- API-Calls müssen HTTP-Status prüfen – bei Fehlern abbrechen und Martin informieren
|
||||
- **Nach Martins Merge:** Pipeline geht automatisch weiter mit Phase 6 (Abnahme) und Phase 7 (Closing). Martin darüber informieren.
|
||||
|
||||
Reference in New Issue
Block a user