- Push access to the repository (to create tags)
CARGO_REGISTRY_TOKENsecret configured in GitHub repo settings (Settings > Secrets and variables > Actions > New repository secret)NPM_TOKENsecret configured for npm publishing
Make sure you are working on the most recent main branch.
git checkout main
git pull origin mainRun the version bump script:
./.scripts/set-version.sh 0.8.0This updates all workspace crate versions and the npm package.json.
Create the version PR:
git checkout -b chore/v0.8.0
git add -A
git commit -m "chore: v0.8.0"
git push origin chore/v0.8.0PR title: chore: v0.8.0
After the version PR has been reviewed and squash-merged:
git checkout main
git pull origin main
git tag v0.8.0
git push origin v0.8.0This triggers the release workflow. That's it -- CI handles the rest.
When a v* tag is pushed, the release workflow:
- Validates the tag is on
main, is valid semver, and matches the version inCargo.toml - Builds artifacts for all platforms (linux-arm64, linux-amd64, windows-amd64, osx-arm64, osx-amd64)
- Creates a GitHub Release with auto-generated release notes and attached artifacts
- Publishes all crates to crates.io via
cargo ws publish - Publishes the npm package to npmjs.com
- GitHub Releases -- new release with artifacts attached
- crates.io -- new version visible
- npmjs.com -- new version visible
See CONTRIBUTORS.md for the unified version policy. All crates are released together on the same version.
Follow Semantic Versioning:
- Patch (0.7.x): bug fixes, no API changes
- Minor (0.x.0): new features, backwards-compatible
- Major (x.0.0): breaking API changes
CI build fails? Fix the issue, then delete and re-push the tag:
git tag -d v0.8.0
git push origin :refs/tags/v0.8.0
# fix the issue, commit, push to main
git tag v0.8.0
git push origin v0.8.0cargo publish fails? Check that CARGO_REGISTRY_TOKEN is set and not expired. Generate a new token at crates.io/settings/tokens.
npm publish fails? Check that NPM_TOKEN is set and not expired. Generate a new token in your npmjs.com account settings.