Closes #52. Adds `scripts/prune-release-assets.sh` and a best-effort step at the end of `build-binaries.yml`. - Lists every release page, sorts by creation date, skips the newest two published releases, deletes the rest's attachments via `DELETE /releases/{id}/assets/{asset_id}`. - Drafts never consume a keep slot, so a draft cannot strip the newest real release. - Releases, tags, source archives and release notes are never touched. - Nothing is excluded: SHA256SUMS and the wrappers go with the binaries. Checksums are only meaningful next to the files they cover, and the consumer drift-check reads the wrappers from the latest release, which stays complete. - Failures warn and the step has `continue-on-error: true` — a stale asset is cheaper than a blocked publish. `tests/prune-release-assets.sh` drives the script with a stub `curl`: keep window, out-of-order responses, drafts, no non-asset DELETE, short-page pagination stop, and both failure paths. Wired into `make check`. v0.2.0 still needs its 9 assets cleared by hand in the web UI, as the issue notes. 🤖 Generated with [Claude Code](https://claude.com/claude-code)Reviewed-on: #70 Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
This commit was merged in pull request #70.
This commit is contained in:
@@ -65,3 +65,17 @@ jobs:
|
||||
"${api}/releases/${id}/assets?name=$(basename "$f")"
|
||||
done
|
||||
'
|
||||
|
||||
# Gitea has no asset retention (#52): without this every tag keeps its
|
||||
# ~57 MB binary set forever. Best-effort — a stale asset is cheaper than
|
||||
# a blocked publish, so a failure here never fails the release.
|
||||
- name: Prune assets of older releases
|
||||
continue-on-error: true
|
||||
env:
|
||||
TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
REPO: ${{ github.repository }}
|
||||
SERVER: ${{ github.server_url }}
|
||||
run: |
|
||||
nix develop --command bash -c '
|
||||
API="${SERVER}/api/v1/repos/${REPO}" scripts/prune-release-assets.sh
|
||||
'
|
||||
|
||||
Reference in New Issue
Block a user