ci / ci (pull_request) Successful in 3m6s
Gitea has no release-asset retention, so every v* tag kept its full cross-platform binary set forever — 31 tags had accumulated 1.8 GB on the production host disk. Nothing consumes an old asset: CI takes the Crucible binary from the Nix flake, and every deleted file is reproducible from its tag. scripts/prune-release-assets.sh lists every release page, sorts by creation date, skips the newest two published releases, and deletes the remaining releases' attachments. Two rather than one so a release in flight never leaves the previous download broken. Drafts never consume a keep slot. Releases, tags, source archives and release notes are untouched. Nothing is excluded — SHA256SUMS and the wrappers go with the binaries: the 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. The step is best-effort: a stale asset is cheaper than a blocked publish, so API failures warn and the step carries continue-on-error. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
27 lines
505 B
Makefile
27 lines
505 B
Makefile
SHELL := bash
|
|
.ONESHELL:
|
|
.PHONY: check test vet build smoke fmt
|
|
|
|
# Lint + unit tests. Mirrors the `test` CI job; runs green inside `nix develop`.
|
|
check: vet test
|
|
shellcheck scripts/*.sh
|
|
yamllint .gitea
|
|
bash tests/workflow-contract.sh
|
|
bash tests/prune-release-assets.sh
|
|
|
|
vet:
|
|
go vet ./...
|
|
|
|
test:
|
|
go test ./...
|
|
|
|
# Build every cmd/* binary into ./bin (gitignored — binaries are CI artifacts).
|
|
build:
|
|
scripts/build-binaries.sh
|
|
|
|
smoke: build
|
|
scripts/crucible-smoke.sh
|
|
|
|
fmt:
|
|
gofmt -l -w cmd internal
|