Skip to content

Commit adf8a98

Browse files
First commit
First commit
1 parent 2e1193c commit adf8a98

File tree

98 files changed

+182015
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+182015
-2
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Cleanup Pre-releases
2+
3+
on:
4+
schedule:
5+
# Run daily at 2 AM UTC
6+
- cron: '0 2 * * *'
7+
workflow_dispatch:
8+
inputs:
9+
days_to_keep:
10+
description: 'Number of days to keep pre-releases'
11+
required: false
12+
default: '7'
13+
type: string
14+
15+
jobs:
16+
cleanup:
17+
runs-on: ubuntu-latest
18+
permissions:
19+
contents: write
20+
21+
steps:
22+
- uses: actions/checkout@v4
23+
24+
- name: Clean up old pre-releases
25+
uses: actions/github-script@v7
26+
with:
27+
script: |
28+
const daysToKeep = parseInt('${{ github.event.inputs.days_to_keep || '7' }}');
29+
const cutoffDate = new Date();
30+
cutoffDate.setDate(cutoffDate.getDate() - daysToKeep);
31+
32+
console.log(`Cleaning up pre-releases older than ${daysToKeep} days (before ${cutoffDate.toISOString()})`);
33+
34+
// Get all releases
35+
const releases = await github.rest.repos.listReleases({
36+
owner: context.repo.owner,
37+
repo: context.repo.repo,
38+
per_page: 100
39+
});
40+
41+
let deletedCount = 0;
42+
43+
for (const release of releases.data) {
44+
// Only process pre-releases with PR tags
45+
if (release.prerelease && release.tag_name.includes('-pr')) {
46+
const releaseDate = new Date(release.created_at);
47+
48+
if (releaseDate < cutoffDate) {
49+
console.log(`Deleting pre-release: ${release.tag_name} (created: ${releaseDate.toISOString()})`);
50+
51+
try {
52+
// Delete the release
53+
await github.rest.repos.deleteRelease({
54+
owner: context.repo.owner,
55+
repo: context.repo.repo,
56+
release_id: release.id
57+
});
58+
59+
// Delete the tag
60+
await github.rest.git.deleteRef({
61+
owner: context.repo.owner,
62+
repo: context.repo.repo,
63+
ref: `tags/${release.tag_name}`
64+
});
65+
66+
deletedCount++;
67+
console.log(`✓ Deleted: ${release.tag_name}`);
68+
} catch (error) {
69+
console.error(`✗ Failed to delete ${release.tag_name}:`, error.message);
70+
}
71+
} else {
72+
console.log(`Keeping: ${release.tag_name} (created: ${releaseDate.toISOString()})`);
73+
}
74+
}
75+
}
76+
77+
console.log(`Cleanup complete. Deleted ${deletedCount} pre-releases.`);

0 commit comments

Comments
 (0)