v0.10.1 chore: add release hygiene workflow - #128
Conversation
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThis PR introduces a GitHub Actions release workflow that automates version tag validation, builds release binaries for Linux and macOS platforms, creates archives with SHA-256 checksums, publishes GitHub Releases, and conditionally publishes to crates.io. Version is bumped to 0.10.1, and release procedures are documented. ChangesRelease Automation
Sequence DiagramsequenceDiagram
participant Committer
participant GitHub as GitHub<br/>(Tag Push)
participant Validate as Validate Job
participant Build as Build Job<br/>(Matrix)
participant GitHub_API as GitHub<br/>Release API
participant Crates as crates.io
Committer->>GitHub: Push vX.Y.Z tag
GitHub->>Validate: Trigger workflow
Validate->>Validate: Check tag format<br/>Verify Cargo.toml version<br/>Verify VERSION file<br/>Extract release notes<br/>Run: fmt/check/clippy/test/package
alt Validation passes
Validate->>Build: Trigger (dependent job)
par Platform builds
Build->>Build: Build Linux x86_64<br/>Create .tar.gz & .sha256
Build->>Build: Build macOS arm64<br/>Create .tar.gz & .sha256
Build->>Build: Build macOS x86_64<br/>Create .tar.gz & .sha256
end
Build->>GitHub_API: Download artifacts<br/>Publish GitHub Release<br/>Attach archives & checksums
alt CARGO_REGISTRY_TOKEN present
GitHub_API->>Crates: cargo publish
Crates->>GitHub_API: Publish confirmation
else Token absent
GitHub_API->>GitHub_API: Skip crates.io publish<br/>Release remains available
end
else Validation fails
Validate->>GitHub: Workflow stops
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
.github/workflows/release.yml (1)
32-107: ⚡ Quick winAdd Rust build cache to the
validatejob to avoid full cold recompilation on every release.The validate job installs Rust and runs
cargo check,cargo clippy,cargo test(456+ tests), andcargo packagewith no caching. AddingSwatinem/rust-cacheavoids rebuilding the entire dependency graph from scratch on each tag push.♻️ Proposed addition
- uses: dtolnay/rust-toolchain@stable with: components: clippy, rustfmt + + - uses: Swatinem/rust-cache@v2 + - name: Validate tag and versions🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/release.yml around lines 32 - 107, The validate job currently runs cargo check/clippy/test/package without any build cache, causing full recompilation each run; add a rust cache step (e.g., using Swatinem/rust-cache@v1) into the validate job before the build steps (before the Format/Check/Clippy/Test/Package steps) to cache target/ and Cargo.lock/Cargo.toml-based keys so incremental builds are reused; reference the job that contains the "Validate tag and versions" step (id: version) and insert the cache step immediately after that block and before the "Format" step to restore/save the cache across runs.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release.yml:
- Around line 121-129: The macos-x86_64 runner entry uses the retired runner
value "macos-13"; update that entry so the os field is "macos-15-intel" while
keeping the target as "x86_64-apple-darwin" (i.e., modify the macos-x86_64 job
definition). Also note the macos-arm64 entry uses "macos-14" which will be
deprecated soon—plan to migrate that job to macos-15 or macos-latest when
appropriate.
---
Nitpick comments:
In @.github/workflows/release.yml:
- Around line 32-107: The validate job currently runs cargo
check/clippy/test/package without any build cache, causing full recompilation
each run; add a rust cache step (e.g., using Swatinem/rust-cache@v1) into the
validate job before the build steps (before the Format/Check/Clippy/Test/Package
steps) to cache target/ and Cargo.lock/Cargo.toml-based keys so incremental
builds are reused; reference the job that contains the "Validate tag and
versions" step (id: version) and insert the cache step immediately after that
block and before the "Format" step to restore/save the cache across runs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: a0393044-56d3-43e1-af7f-0e40f4b89911
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (6)
.github/workflows/release.ymlCHANGELOG.mdCargo.tomlREADME.mdVERSIONVERSIONING.md
Summary
Versioning (required)
SemVer choice
Version selected: v0.10.1
Release impact
After this merges and main CI passes, create and push v0.10.1 from main. The Release workflow will validate version alignment, run Rust gates, build Linux/macOS archives, publish a GitHub Release with checksums, and publish to crates.io if CARGO_REGISTRY_TOKEN is configured.
Validation
Release
Summary by CodeRabbit
Chores
Documentation