Skip to content

Commit ba57dc6

Browse files
authored
Add action for purging old (pre)releases (#36)
1 parent b7df1da commit ba57dc6

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Delete Old Releases
2+
3+
on:
4+
schedule:
5+
- cron: '0 3 * * *' # Daily at 03:00 UTC
6+
workflow_dispatch: # Manual trigger
7+
8+
jobs:
9+
clean_releases:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Delete old releases
13+
env:
14+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
15+
run: |
16+
# Get all releases (handle pagination)
17+
releases=$(gh api --paginate repos/${{ github.repository }}/releases)
18+
19+
# Process full releases
20+
full_releases=$(echo "$releases" | jq -c '[.[] | select(.prerelease == false)] | sort_by(.created_at) | reverse')
21+
full_to_delete=$(echo "$full_releases" | jq '.[3:] | .[].id')
22+
for id in $full_to_delete; do
23+
echo "Deleting old full release ID: $id"
24+
gh api --method DELETE repos/${{ github.repository }}/releases/$id
25+
done
26+
27+
# Process pre-releases
28+
pre_releases=$(echo "$releases" | jq -c '[.[] | select(.prerelease == true)] | sort_by(.created_at) | reverse')
29+
pre_to_delete=$(echo "$pre_releases" | jq '.[3:] | .[].id')
30+
for id in $pre_to_delete; do
31+
echo "Deleting old pre-release ID: $id"
32+
gh api --method DELETE repos/${{ github.repository }}/releases/$id
33+
done

0 commit comments

Comments
 (0)