diff --git a/.github/workflows/auto-release-on-push.yml b/.github/workflows/auto-release-on-push.yml index b4362e2..87cac8d 100644 --- a/.github/workflows/auto-release-on-push.yml +++ b/.github/workflows/auto-release-on-push.yml @@ -202,8 +202,9 @@ jobs: exit 0 fi + # Tag erstellen und pushen (ohne main-Branch zu berühren) git tag -a "v$NEW_VERSION" -m "Automatic release v$NEW_VERSION" - git push origin main + echo "Pushing tag v$NEW_VERSION (no main branch push needed)" git push origin "v$NEW_VERSION" - name: Create GitHub Release diff --git a/BRANCH_PROTECTION_SOLUTION.md b/BRANCH_PROTECTION_SOLUTION.md new file mode 100644 index 0000000..3fd4bcc --- /dev/null +++ b/BRANCH_PROTECTION_SOLUTION.md @@ -0,0 +1,81 @@ +# 🛡️ Branch Protection Conflict - Lösung + +## 🚨 Problem +``` +remote: error: GH013: Repository rule violations found for refs/heads/main +remote: - Changes must be made through a pull request +remote: - 4 of 4 required status checks are expected +``` + +## ✅ Das ist KORREKT! + +**Dies ist kein Fehler, sondern ein Erfolg!** 🎉 + +Die Branch Protection Rules funktionieren wie gewünscht: +- ✅ Direkte Pushes auf `main` sind blockiert +- ✅ Pull Requests sind erforderlich +- ✅ Status Checks laufen +- ✅ Code Scanning ist aktiv + +## 🎯 Was passiert ist + +1. **Merge-Commit erkannt** ✓ +2. **Version berechnet**: v1.11.0 ✓ +3. **Release-Prozess gestartet** ✓ +4. **Branch Protection blockiert Push** ✓ (Gewünscht!) + +## 🔧 Lösungsoptionen + +### Option 1: GitHub App Token (Professionell) +```yaml +- uses: tibdex/github-app-token@v1 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.PRIVATE_KEY }} +``` + +### Option 2: Release ohne main-Push (Empfohlen) +Der Workflow sollte **nur Tags und Releases** erstellen, nicht auf `main` pushen: + +```yaml +- name: Create Release + uses: softprops/action-gh-release@v1 + with: + tag_name: v${{ steps.version.outputs.new_version }} + name: Release v${{ steps.version.outputs.new_version }} + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +``` + +### Option 3: Admin Override (Temporär) +Für Admins: Branch Protection temporär für Service-Accounts aussetzen. + +## 🎯 Empfohlene Lösung + +**Workflow anpassen** - Kein direkter Push auf `main` nötig: + +1. **Tag erstellen** ✓ +2. **Release erstellen** ✓ +3. **Assets hochladen** ✓ +4. **PyPI publish** ✓ +5. **Packages publish** ✓ + +**Ohne** main-Branch zu berühren! + +## 📋 Nächste Schritte + +1. **Workflow anpassen** - Entferne `git push origin main` +2. **Nur Tags/Releases** - Verwende GitHub API +3. **Branch Protection beibehalten** - Für Sicherheit + +## ✨ Warum das gut ist + +- 🛡️ **Sicherheit**: Kein direkter main-Push möglich +- 🔄 **Workflow**: Alle Änderungen über PRs +- 🧪 **Testing**: Status Checks vor jedem Merge +- 📝 **Review**: Code Review für alle Änderungen + +--- + +*Branch Protection funktioniert korrekt!* 🚀 diff --git a/WORKFLOW_BRANCH_PROTECTION_FIX.md b/WORKFLOW_BRANCH_PROTECTION_FIX.md new file mode 100644 index 0000000..4bde56a --- /dev/null +++ b/WORKFLOW_BRANCH_PROTECTION_FIX.md @@ -0,0 +1,86 @@ +# 🔧 Workflow Branch Protection Fix + +## 🚨 Problem behoben + +### Ursprüngliches Problem: +```bash +git push origin main ← BLOCKIERT durch Branch Protection! +git push origin "v$NEW_VERSION" +``` + +**Fehler:** +``` +remote: error: GH013: Repository rule violations found for refs/heads/main +remote: - Changes must be made through a pull request +``` + +### ✅ Lösung implementiert: +```bash +# Tag erstellen und pushen (ohne main-Branch zu berühren) +git tag -a "v$NEW_VERSION" -m "Automatic release v$NEW_VERSION" +git push origin "v$NEW_VERSION" ← NUR Tag-Push, kein main-Push! +``` + +## 🎯 Was geändert wurde + +### Entfernt: +- ❌ `git push origin main` - Nicht nötig für Releases! + +### Beibehalten: +- ✅ `git push origin "v$NEW_VERSION"` - Tag-Push ist erlaubt +- ✅ GitHub Release creation +- ✅ Asset uploads +- ✅ PyPI publishing + +## 🛡️ Warum das besser ist + +### Branch Protection bleibt aktiv: +- 🔒 **Kein direkter Push auf main** - Sicherheit +- 📝 **Alle Änderungen über PRs** - Code Review +- 🧪 **Status Checks erforderlich** - Qualität +- 🔍 **Code Scanning aktiv** - Sicherheit + +### Workflow funktioniert trotzdem: +- ✅ **Tags werden erstellt** - Für Releases +- ✅ **GitHub Releases** - Automatisch +- ✅ **Assets hochgeladen** - Packages verfügbar +- ✅ **PyPI Publishing** - Automatisch + +## 🔄 Neuer Workflow + +### Was passiert bei Merge-Commits: +1. **Merge erkannt** → `Merge pull request #X` +2. **Version berechnet** → v1.11.0 +3. **Tag erstellt** → `v1.11.0` +4. **Tag gepusht** → Nur Tag, nicht main! +5. **Release erstellt** → GitHub Release +6. **Assets hochgeladen** → Packages verfügbar + +### Kein main-Push nötig: +- Tags können unabhängig von Branches gepusht werden +- GitHub Releases werden von Tags erstellt +- Branch Protection wird respektiert + +## 🧪 Test-Erwartung + +**Nächster Merge sollte funktionieren:** +``` +✅ Merge commit detected +✅ Version: v1.11.0 +✅ Tag created: v1.11.0 +✅ Tag pushed successfully (no main push) +✅ GitHub Release created +✅ Assets uploaded +✅ PyPI published +``` + +## ✨ Vorteile + +- 🛡️ **Maximale Sicherheit** - Branch Protection aktiv +- 🚀 **Automatische Releases** - Funktionieren weiterhin +- 📦 **Alle Features** - Packages, PyPI, Assets +- 🔄 **Pull Request Workflow** - Professionell + +--- + +*Branch Protection + Automatische Releases = Perfekte Kombination!* 🎉