diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 378c09d..26a2df8 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -93,3 +93,42 @@ jobs: generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Delete draft releases older than 7 days + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const daysToKeep = 7; + const cutoffDate = new Date(Date.now() - daysToKeep * 24 * 60 * 60 * 1000); + + const releases = await github.rest.repos.listReleases({ + owner: context.repo.owner, + repo: context.repo.repo, + per_page: 100 + }); + + for (const release of releases.data) { + if (release.draft) { + const created = new Date(release.created_at); + if (created < cutoffDate) { + console.log(`Deleting draft release: ${release.name || release.tag_name} (${release.id})`); + await github.rest.repos.deleteRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.id + }); + + try { + await github.rest.git.deleteRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: `tags/${release.tag_name}` + }); + console.log(`Deleted tag: ${release.tag_name}`); + } catch (err) { + console.log(`Tag ${release.tag_name} not found or already deleted.`); + } + } + } + } \ No newline at end of file