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+
1522env :
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