From 8f062bb96c8db67504187c90d47e286fc1671ba5 Mon Sep 17 00:00:00 2001 From: yusyus Date: Wed, 22 Oct 2025 23:13:55 +0300 Subject: [PATCH] Fix GitHub Actions release workflow permissions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: - Release workflow failing with "Resource not accessible by integration" - Missing permissions for GITHUB_TOKEN to create releases - Workflow tried to create releases that already exist manually Fix: 1. Added `permissions: contents: write` at workflow level - Grants GITHUB_TOKEN permission to create/edit releases - Required for softprops/action-gh-release@v1 2. Added release existence check before creation - Prevents errors when release already exists - Skips creation gracefully with informative message - Useful for manually created releases (like v1.1.0) Changes: - Line 8-9: Added permissions section - Line 48-57: Check if release exists with gh CLI - Line 59-60: Only create if release doesn't exist - Line 69-73: Skip message when release already exists This allows: - Automatic release creation on new tags - Manual release creation without workflow conflicts - Proper error handling and user feedback Related: GitHub Actions permissions model https://docs.github.com/en/actions/security-guides/automatic-token-authentication 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/release.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7f7de9a..63029c5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,9 @@ on: tags: - 'v*' +permissions: + contents: write + jobs: build: runs-on: ubuntu-latest @@ -42,7 +45,19 @@ jobs: echo "Release ${{ steps.get_version.outputs.VERSION }}" > release_notes.md fi + - name: Check if release exists + id: check_release + run: | + if gh release view ${{ github.ref_name }} > /dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + else + echo "exists=false" >> $GITHUB_OUTPUT + fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create GitHub Release + if: steps.check_release.outputs.exists == 'false' uses: softprops/action-gh-release@v1 with: body_path: release_notes.md @@ -50,3 +65,9 @@ jobs: prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Skip Release Creation + if: steps.check_release.outputs.exists == 'true' + run: | + echo "ℹ️ Release ${{ github.ref_name }} already exists, skipping creation" + echo "View at: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}"