Fix GitHub Actions release workflow permissions
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 <noreply@anthropic.com>
This commit is contained in:
21
.github/workflows/release.yml
vendored
21
.github/workflows/release.yml
vendored
@@ -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 }}"
|
||||
|
||||
Reference in New Issue
Block a user