feat: [12] Branch-Protection per Pipeline reconcilen #51
No reviewers
Labels
No labels
auto-merge
bug
chore
dependency
duplicate
enhancement
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
hobbypunk/rails-base_app!51
Loading…
Reference in a new issue
No description provided.
Delete branch "enhancement/12_branch_protection"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Folge-PR aus #12 – baut auf dem gemergten PR #50 (Labeler + Conventional-Title) auf.
Idee: Protection als Code
Statt Branch-Protection manuell pro Repo zu setzen (kein natives Forgejo-Default für neue Repos existiert), reconciled ein Pipeline-Job die Regel bei jedem Push auf main:
.github/actions/branch-protection/– Composite Action (node, plain fetch): GET der Rule → bei 404 POST (anlegen), bei Abweichung PATCH (korrigieren), bei Sync no-op.github/workflows/branch-protection.yml– feuert bei Push auf main + manuell per workflow_dispatchCI / * (pull_request)als Required Check, Push erlaubt, 0 Approvals)Warum Reconcile statt Change-Detection
Idempotent, billig (~20s) und self-healing: UI-Änderungen an der Rule werden beim nächsten main-Push auf den Sollzustand zurückgesetzt. Die Workflow-Inputs sind ab jetzt die Source of Truth.
Default für neue Repos
Der Workflow reist mit der Base-App: Jedes neue Projekt setzt seine Protection automatisch beim ersten Push auf main – ohne Token-Gedöns, ohne manuellen Schritt.
⚠️ Verhalten ab Merge
Was auch immer ab jetzt jemand (auch manuell in der UI) an der Protection-Regel ändert: Der nächste main-Push stellt den Workflow-Zustand wieder her. Anpassungen bitte künftig im Workflow machen.
Offene Frage
Ob der ephemeral
secrets.GITHUB_TOKENdie Admin-API für Branch-Protection darf, zeigt der erste Run – falls 403, schalten wir auf einen PAT-Secret um.[12] Branch-Protection per Pipeline reconcilen (GitOps)to feat: [12] Branch-Protection per Pipeline reconcilen (GitOps)feat: [12] Branch-Protection per Pipeline reconcilen (GitOps)to feat: [12] Branch-Protection per Pipeline reconcilen📊 Coverage
Patch-Coverage: keine getrackten Zeilen geändert
Schwächste Dateien im Projekt
🔍 Report im Browser ansehen · 📄 Run-Artifact „coverage-report“