Skip to content

chore: replace changesets with release-plz + cargo-dist#49

Merged
skgbafa merged 3 commits into
mainfrom
chore/rust-native-releases
Apr 27, 2026
Merged

chore: replace changesets with release-plz + cargo-dist#49
skgbafa merged 3 commits into
mainfrom
chore/rust-native-releases

Conversation

@skgbafa
Copy link
Copy Markdown
Contributor

@skgbafa skgbafa commented Apr 24, 2026

Summary

  • Replaces JS-based changesets with Rust-native release tooling
  • release-plz: creates versioning PRs from conventional commits, generates changelogs, pushes git tags on merge
  • cargo-dist: builds cross-compiled binaries on tag push, uploads to GitHub Releases
  • cargo-binstall: metadata added so users can cargo binstall tinycloud-node-server to get prebuilt binaries

What changed

  • Removed .changeset/, version-cargo.mjs, apply-changesets.mjs, @changesets/cli
  • Added release-plz.toml (only releases tinycloud-node-server, skips internal crates)
  • Added .github/workflows/release-plz.yml (version PR creation + tagging)
  • Replaced .github/workflows/release.yml (now cargo-dist: builds Linux x86/ARM + macOS x86/ARM)
  • Added binstall + dist metadata to Cargo.toml files

Release flow

  1. Push to main → release-plz creates a release PR
  2. Merge release PR → release-plz creates a version tag
  3. Tag push → cargo-dist builds 4 binaries + uploads to GitHub Release
  4. Users: cargo binstall tinycloud-node-server or download from Releases

Test plan

  • Merge and verify release-plz workflow triggers on main
  • Verify release PR is created with correct version bump
  • Merge release PR and confirm tag is created
  • Confirm cargo-dist builds binaries for all 4 targets

skgbafa added 3 commits April 24, 2026 18:29
Remove the JS-based changesets release tooling (changeset CLI, custom
version-cargo.mjs and apply-changesets.mjs scripts) and replace with
a fully Rust-native release stack:

- release-plz: creates release PRs with version bumps and changelogs
  on push to main, then tags releases when the PR is merged
- cargo-dist style workflow: builds binaries for 4 targets
  (x86_64/aarch64 linux and macOS) on tag push, uploads to GitHub
  Releases as .tar.gz archives
- cargo-binstall metadata: enables `cargo binstall tinycloud-node-server`

Release flow:
  push to main -> release-plz creates release PR
  merge release PR -> release-plz creates git tag (v1.x.x)
  tag push -> release workflow builds binaries + GitHub Release

Removed:
  - .changeset/ directory and config
  - .github/scripts/version-cargo.mjs
  - scripts/apply-changesets.mjs
  - @changesets/cli devDependency from package.json
@skgbafa skgbafa merged commit f06d607 into main Apr 27, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant