feat(ci): pr-convention-check Drone-Step (#434) #435

Merged
admin-mrrm merged 1 commit from feat/434-pr-convention-check into main 2026-06-06 15:18:24 +02:00
Collaborator

Summary

  • Neuer Drone-Step pr-convention-check (~25 Zeilen Shell+curl+jq) blockt PRs die ein Issue referenzieren ohne Close-Keyword
  • Branch-Namen-Heuristik: #N in Title oder N-Segment in Branch reicht als Issue-Ref-Signal
  • Refactor-/Doc-PRs ohne Issue-Ref kommen unverändert durch
  • Portable für Drone (heute) und Woodpecker (server-stack#17) via Env-Var-Bridge

Test plan

  • Regex lokal gegen 7 synthetische Cases getestet
  • Smoke-Test gegen #432 (hat Fixes #409): PASS
  • Smoke-Test gegen #433 (kein Issue-Ref): PASS-no-ref
  • Negative-Test mit synthetischem PR (issue-ref ohne Close-Keyword): FAIL wie erwartet
  • Drone PR-Build grün
  • Drone Build zeigt den neuen Step

Manueller Folge-Schritt

Gitea Repo-Settings → Branch Protection auf main:

  • "Status checks must pass" → continuous-integration/drone/pr als required
  • "Apply to administrators" toggle aktivieren

Das schließt die historische Falle (Pipeline fail aber PR trotzdem gemerged) und macht den Guard bypass-sicher.

Fixes #434

## Summary - Neuer Drone-Step `pr-convention-check` (~25 Zeilen Shell+curl+jq) blockt PRs die ein Issue referenzieren ohne Close-Keyword - Branch-Namen-Heuristik: `#N` in Title oder `N`-Segment in Branch reicht als Issue-Ref-Signal - Refactor-/Doc-PRs ohne Issue-Ref kommen unverändert durch - Portable für Drone (heute) und Woodpecker (server-stack#17) via Env-Var-Bridge ## Test plan - [x] Regex lokal gegen 7 synthetische Cases getestet - [x] Smoke-Test gegen #432 (hat Fixes #409): PASS - [x] Smoke-Test gegen #433 (kein Issue-Ref): PASS-no-ref - [x] Negative-Test mit synthetischem PR (issue-ref ohne Close-Keyword): FAIL wie erwartet - [ ] Drone PR-Build grün - [ ] Drone Build zeigt den neuen Step ## Manueller Folge-Schritt Gitea Repo-Settings → Branch Protection auf `main`: - "Status checks must pass" → `continuous-integration/drone/pr` als required - "Apply to administrators" toggle aktivieren Das schließt die historische Falle (Pipeline fail aber PR trotzdem gemerged) und macht den Guard bypass-sicher. Fixes #434
feat(ci): pr-convention-check Drone-Step
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
8bd9f3dba0
Neuer Step verhindert dass PRs die ein Issue referenzieren (im Branch-
Namen oder PR-Title) ohne Close-Keyword gemerged werden — Issues
blieben bisher in 4+ Fällen offen obwohl in Prod (siehe #406).

Logik:
- Wenn Branch oder Title eine Issue-Ref andeutet (#N oder N-Segment),
  muss Title oder Body "(Closes|Fixes|Resolves|Behebt|Schließt) #N"
  enthalten — sonst exit 1.
- Refactor-/Doc-PRs ohne Issue-Ref kommen unverändert durch.
- Portable für Drone (heute) und Woodpecker (server-stack#17): Env-Var-
  Bridge DRONE_PULL_REQUEST / CI_COMMIT_PULL_REQUEST_NUMBER.

Manueller Folge-Schritt (außerhalb dieses PRs):
- Gitea Repo-Settings → Branch Protection auf main:
  "Status checks must pass" → continuous-integration/drone/pr required
  "Apply to administrators" toggle aktivieren (verhindert Bypass).

Fixes #434
admin-mrrm deleted branch feat/434-pr-convention-check 2026-06-06 15:18:24 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!435
No description provided.