Skip to content

Commit 5bfc30d

Browse files
Merge pull request #138 from Githubguy132010/dev
Add workflow to delete old releases automatically
2 parents 27ae54f + eb8fb08 commit 5bfc30d

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Delete Old Releases
2+
3+
on:
4+
release:
5+
types: [created]
6+
workflow_dispatch:
7+
8+
jobs:
9+
delete-old-releases:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write # Required to delete releases
13+
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v4
17+
18+
- name: Delete all but the most recent release
19+
uses: actions/github-script@v7
20+
with:
21+
script: |
22+
const { owner, repo } = context.repo;
23+
24+
// Get all releases
25+
const releases = await github.rest.repos.listReleases({
26+
owner,
27+
repo,
28+
per_page: 100, // Adjust as needed, max 100 per page
29+
});
30+
31+
if (releases.data.length <= 1) {
32+
console.log('Fewer than two releases found. No old releases to delete.');
33+
return;
34+
}
35+
36+
// Sort releases by creation date in descending order
37+
// The first element will be the most recent release
38+
const sortedReleases = releases.data.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
39+
40+
console.log(`Found ${sortedReleases.length} releases. The most recent release is: ${sortedReleases[0].tag_name}`);
41+
42+
// Iterate through releases starting from the second one (index 1)
43+
// and delete them. The first release (index 0) is the most recent and should be kept.
44+
for (let i = 1; i < sortedReleases.length; i++) {
45+
const releaseToDelete = sortedReleases[i];
46+
console.log(`Attempting to delete release: ${releaseToDelete.tag_name} (ID: ${releaseToDelete.id})`);
47+
try {
48+
await github.rest.repos.deleteRelease({
49+
owner,
50+
repo,
51+
release_id: releaseToDelete.id,
52+
});
53+
console.log(`Successfully deleted release: ${releaseToDelete.tag_name}`);
54+
} catch (error) {
55+
console.error(`Failed to delete release ${releaseToDelete.tag_name}: ${error.message}`);
56+
// Continue to try deleting other releases even if one fails
57+
}
58+
}
59+
console.log('Finished processing old releases.');

0 commit comments

Comments
 (0)