| name | cutting-raps-release |
| version | 1.0 |
| description | Use when bumping the RAPS version for a new release — updates Cargo.toml workspace version, 9 internal crate dependencies, 6 npm package.json files, creates git tag, and triggers the release workflow. |
Cutting a RAPS Release
Bump version across all files, tag, and trigger the release workflow.
Repo: /root/github/raps/raps
Files to Update (16 version locations)
Cargo.toml (workspace root)
| Location | Pattern |
|---|
Line ~18: [workspace.package] | version = "X.Y.Z" |
Lines ~29-37: [workspace.dependencies] | 9 crates with version = "X.Y.Z" |
Internal crates: raps-kernel, raps-oss, raps-derivative, raps-dm, raps-da, raps-acc, raps-webhooks, raps-reality, raps-admin.
npm packages (6 files)
| File | Field |
|---|
npm/package.json | "version" + 5 optionalDependencies values |
npm/platforms/win32-x64/package.json | "version" |
npm/platforms/darwin-x64/package.json | "version" |
npm/platforms/darwin-arm64/package.json | "version" |
npm/platforms/linux-x64/package.json | "version" |
npm/platforms/linux-arm64/package.json | "version" |
NOT updated (separate version)
python-bindings/Cargo.toml — independent version (currently 4.3.0)
python-bindings/pyproject.toml — same
Procedure
OLD="4.16.0"
NEW="4.17.0"
sed -i "s/version = \"${OLD}\"/version = \"${NEW}\"/g" Cargo.toml
sed -i "s/\"version\": \"${OLD}\"/\"version\": \"${NEW}\"/" npm/package.json
sed -i "s/\"${OLD}\"/\"${NEW}\"/g" npm/package.json
for p in win32-x64 darwin-x64 darwin-arm64 linux-x64 linux-arm64; do
sed -i "s/\"version\": \"${OLD}\"/\"version\": \"${NEW}\"/" npm/platforms/${p}/package.json
done
grep -r "$NEW" Cargo.toml npm/package.json npm/platforms/*/package.json
git add Cargo.toml npm/
git commit -m "chore: bump version to ${NEW}"
git tag "v${NEW}"
git push origin main --tags
Release Workflow Stages
After tag push, .github/workflows/release.yml runs:
- plan — cargo-dist determines build matrix
- build — platform binaries (5 targets)
- host — GitHub Release with artifacts
- sbom — supply chain transparency
- provenance — SLSA attestation
- test-install-scripts — verify install.sh on multiple OS
- publish-npm — extracts binaries, publishes 6 npm packages
- publish-pypi — publishes Python wheel
Common Mistakes
- Forgetting optionalDependencies in
npm/package.json (5 version strings, not just the top-level version)
- Using a sed pattern that replaces ALL dependency names with one platform name (the bug that broke v4.15.0)
- Bumping python-bindings when not intended (separate release cycle)
- Pushing tag before committing version bump