feat: release pipeline — tag-driven releases with static binaries #7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/release-pipe"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements the
release-pipelineOpenSpec change. Full gate green locally including the newchecks.static.A release is now defined: tag
vX.Y.Z→ tag/crate-version guard → full CI gate → Forgejo release with five assets: truly static binaries for x86_64 + aarch64 Linux (verified:lddstatic, ARM ELF),SHA256SUMS,openapi.json, rendered docs archive. Notes generated from commits since the previous tag. Runs on the same volatile runner as CI.Notable decision (design D1, veto welcome): reqwest drops its TLS stack entirely — the upstream path is plain HTTP over WireGuard by permanent constraint (stats-api D5), so rustls was dead code; removing it gives a pure-Rust dependency tree, which is why both musl statics link via rust-lld with no cross-gcc and come out at 7.4/7.7 MB. Reversible one-liner if a TLS upstream ever materializes.
Also:
--versionon the binary (tag equality enforced ⇒ running instances identify their release), rust-overlay input scoped to statics only (the "concrete need" dev-environment's design deferred it for), Releases book page, operator flow in CLAUDE.md.Asset assembly dry-run performed locally — all five assets build and
sha256sum -cverifies.🤖 Generated with Claude Code
https://claude.ai/code/session_01T5j3dAJVcUjZv9k76sRTt9
- reqwest drops its TLS stack (upstream is HTTP-over-WireGuard by permanent constraint; pure-Rust tree makes musl statics trivial) - --version prints the crate version; release workflow enforces tag == v<version> so binaries identify their release - rust-overlay input scoped to static builds only: packages. static-{x86_64,aarch64}-linux via musl + rust-lld, no cross gcc; x86_64 static joins the gate as checks.static - .forgejo/workflows/release.yml: tag -> guard -> full gate -> 5 assets (2 static binaries, SHA256SUMS, openapi.json, docs archive) -> Forgejo release with notes from commits since previous tag - Book: Releases page; CLAUDE.md operator flow; README note Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5j3dAJVcUjZv9k76sRTt9