ci: attach cot-cli binaries to releases - #640
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests.
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
|
Maintainer handoff: the fork’s Rust CI run completed the build/test and coverage-generation work; its only failing step is the final Codecov upload because |
There was a problem hiding this comment.
Pull request overview
Adds automated cross-platform cot-cli release binaries and cargo-binstall support, addressing #590.
Changes:
- Builds and uploads binaries for six Linux, macOS, and Windows targets.
- Configures cargo-binstall to locate the release archives and binaries.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.github/workflows/release-binaries.yml |
Adds the release-triggered build and upload matrix. |
cot-cli/Cargo.toml |
Adds cargo-binstall release metadata. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
seqre
left a comment
There was a problem hiding this comment.
Thank you for your work and welcome to Cot's community!
Overall, it looks good and needs only few changes for it to be good enough for merging. Specifically, apart from code comments, I'd like for sha256sums be available for each artifact for integrity verification and for license files to be included in the archives (licenses ask that their text accompany distributed copies).
While not required, if you want to go extra steps, please consider the following:
- build provenance attestation (eg. GitHub's official)
- including README.md and CHANGELOG.md into archives
- generating and including shell completions
ripgrep's release system is one good example of such actions
| include: | ||
| - target: x86_64-unknown-linux-gnu | ||
| os: ubuntu-latest | ||
| - target: aarch64-unknown-linux-gnu | ||
| os: ubuntu-latest | ||
| - target: x86_64-apple-darwin | ||
| os: macos-latest | ||
| - target: aarch64-apple-darwin | ||
| os: macos-latest | ||
| - target: x86_64-pc-windows-msvc | ||
| os: windows-latest | ||
| - target: aarch64-pc-windows-msvc | ||
| os: windows-latest |
There was a problem hiding this comment.
To increase portability of binaries, I'd choose to use ubuntu-22.04 for older glibc or compiling musl version (or both). What do you think @cot-rs/maintainers?
There was a problem hiding this comment.
Agreed that the glibc baseline should be intentional. I have left this matrix unchanged for now because ubuntu-22.04 for the existing GNU targets, adding musl targets, and shipping both define different artifact sets. @cot-rs/maintainers, which of those should this PR adopt? I can update the matrix and cargo-binstall mapping once that choice is confirmed.
|
Implemented the requested release-artifact changes in |
Related issue or discussion
Fixes #590.
Description
Build and attach
cot-clibinaries when acot-cli-v…GitHub release is created.crossfor Linux ARM64 and the standard upload action's native archive defaults:.tar.gzon Unix and.zipon Windows.Type of change
Verification
actionlint 1.7.12on the new workflow and the complete workflow setyamlfmt 0.21.0on the new workflow and the complete workflow settaiki-e/upload-rust-binary-action@v1.30.2inputs for additional archive files and SHA-256 outputcot-cli-<target>.tar.gzarchives containingcot, and two.ziparchives containingcot.exegit diff --checkA full Rust cross-build was not run locally because the installed toolchain predates the workspace's Rust 1.94 requirement and local disk space was constrained. The remaining integration risk is the first real six-target release build, especially Windows ARM64; action/YAML/metadata wiring is validated above.
Checklist
just test-all) — no Rust source changed; see the toolchain limitation abovejust clippy) — no Rust source changedyamlfmt)AI disclosure: I used an AI coding assistant to inspect the release-plz and existing workflow conventions, implement this release matrix and cargo-binstall mapping, and run the static/semantic checks above. I reviewed the final workflow and understand the remaining first-cross-build risk before submitting.