ci: automate releases with release-plz

Replace the 326-line semantic-release/npm workflow with release-plz, which
handles the whole chain the old one only half did:

- versioning and CHANGELOG from the conventional commits already in use
- a `chore: release vX.Y.Z` PR as the gate; merging it tags and releases
- publishes both crates to crates.io in dependency order, waiting for the
  index between them (RELEASE.md used to ask you to do this by hand)
- release-plz.toml keeps the two crates on one version, one tag, one changelog

Binaries now cover six targets instead of four. Linux switches from gnu to
musl so the downloads are statically linked and stop caring about the host's
glibc version; linux-aarch64 and windows-aarch64 are new. Archives carry
sha256 checksums plus README and LICENSE.

CI drops twelve hand-rolled actions/cache steps for Swatinem/rust-cache.
This commit is contained in:
Michel de Graaf
2026-07-24 12:37:28 +02:00
parent 5e34722a1b
commit 6403c11c8f
4 changed files with 162 additions and 442 deletions
+22
View File
@@ -0,0 +1,22 @@
# Both crates inherit `version.workspace`, so they always move together. This
# config makes release-plz treat them as one release: a single `vX.Y.Z` tag, one
# GitHub release, one root CHANGELOG.md covering both. release-plz still
# publishes them to crates.io in dependency order (lib first) and waits for the
# index, which is what RELEASE.md used to ask you to do by hand.
[workspace]
git_tag_name = "v{{ version }}"
git_release_name = "v{{ version }}"
[[package]]
name = "soulseek-rs"
version_group = "workspace"
changelog_path = "./CHANGELOG.md"
changelog_include = ["soulseek-rs-lib"]
[[package]]
name = "soulseek-rs-lib"
version_group = "workspace"
changelog_update = false
git_tag_enable = false
git_release_enable = false