Skip to content

Commit deb96f7

Browse files
Improve release cleanup process by adding error handling and ensuring proper permissions for GITHUB_TOKEN
1 parent 6afec81 commit deb96f7

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

.github/workflows/build.yaml

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ on:
1212
- '**.md'
1313
- '.gitignore'
1414

15+
# Add permissions needed for creating and managing releases
16+
permissions:
17+
contents: write
18+
packages: read
19+
issues: read
20+
pull-requests: read
21+
1522
env:
1623
DOCKER_BUILDKIT: 1
1724
ISO_FILENAME: Arch.iso
@@ -188,18 +195,27 @@ jobs:
188195
189196
- name: Delete old releases
190197
env:
198+
# We need to use a token with sufficient permissions
199+
# Using GITHUB_TOKEN with proper permissions defined at workflow level
191200
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
192201
run: |
193202
# Get current release tag we're creating
194203
current_tag="v${{ env.VERSION }}"
195204
echo "Current release tag: $current_tag"
196205
197206
# List all releases excluding the current one we're creating
198-
# Sort by creation date (oldest first)
199207
echo "Listing existing releases..."
200-
readarray -t old_releases < <(gh release list --limit 100 --exclude-drafts --exclude-pre-releases --json tagName,createdAt --jq 'sort_by(.createdAt) | .[].tagName')
201208
202-
# Keep no old releases
209+
# Try to get releases, handling potential errors
210+
if ! releases=$(gh release list --limit 100 --exclude-drafts --exclude-pre-releases --json tagName,createdAt); then
211+
echo "::warning::Unable to list releases, skipping cleanup"
212+
exit 0
213+
fi
214+
215+
# Parse the JSON output and extract tag names sorted by creation date
216+
readarray -t old_releases < <(echo "$releases" | jq -r 'sort_by(.createdAt) | .[].tagName')
217+
218+
# Keep no old releases (excluding current new release)
203219
keep=0
204220
count=0
205221
total=${#old_releases[@]}
@@ -216,8 +232,12 @@ jobs:
216232
217233
((count++))
218234
if ((count > keep)); then
219-
echo "Deleting old release: $tag"
220-
gh release delete "$tag" --yes || echo "Failed to delete release $tag"
235+
echo "Attempting to delete release: $tag"
236+
if gh release delete "$tag" --yes; then
237+
echo "Successfully deleted release: $tag"
238+
else
239+
echo "::warning::Failed to delete release $tag - this is non-fatal"
240+
fi
221241
else
222242
echo "Keeping release: $tag"
223243
fi

0 commit comments

Comments
 (0)