Skip to content

ci(release): Migrate to cargo-dist and overhaul CI#282

Open
fischeti wants to merge 6 commits intofischeti/slang-testfrom
fischeti/slang-release
Open

ci(release): Migrate to cargo-dist and overhaul CI#282
fischeti wants to merge 6 commits intofischeti/slang-testfrom
fischeti/slang-release

Conversation

@fischeti
Copy link
Contributor

@fischeti fischeti commented Feb 26, 2026

Summary

Replaces the hand-rolled release system (per-distro Docker matrix + custom packaging scripts) with cargo-dist, and overhauls CI to match the new release infrastructure.

Release infrastructure

  • Delete old release.yaml, gen_dockerfile.sh, and package.sh
  • Add dist-workspace.toml — declarative cargo-dist config covering 5 targets: x86_64/aarch64 on Linux and macOS, x86_64 on Windows
  • Add release.yml (autogenerated by cargo-dist) — handles planning, building, and publishing GitHub Releases with shell + PowerShell installers
  • Linux release builds use manylinux_2_28 containers (glibc ≥ 2.28, covers RHEL 8+, Ubuntu 18.04+)
  • macOS aarch64 uses macos-15 (requires Clang/LLVM ≥ 17.0.0 for slang)

CI overhaul

  • Consolidate test, test-windows, test-macos into a single test job with a unified matrix: Linux runs stable/beta/nightly/MSRV, Windows and macOS run stable only
  • Add dedicated release-build.yml workflow that runs on push to master only (not on PRs), using the exact same runners and manylinux_2_28 containers as the actual release — catches platform/glibc issues before tagging
  • Extract formatting checks (rustfmt, clang-format) into formatting.yml
  • Add rust compile caching to all jobs
  • Add concurrency groups to cancel redundant runs on force-push

Installer transition (see also #285)

  • Update README.md installation section: the installer now places bender in ~/.cargo/bin (on $PATH) rather than the current directory; cargo-dist handles platform detection
  • The existing init script URL (https://pulp-platform.github.io/bender/init) continues to work via a version-aware router (PR installer: replace init with version-aware router #285): versions ≥ 0.31.0 are routed to the cargo-dist installer, older versions fall back to the legacy script

TODOs


This is part 3 of 3 in a stack made with GitButler:

@fischeti fischeti force-pushed the fischeti/slang-test branch from 5bac2c7 to 905a75d Compare February 27, 2026 14:40
@fischeti fischeti force-pushed the fischeti/slang-release branch from ec5e9cc to af7426b Compare February 27, 2026 14:40
@fischeti fischeti force-pushed the fischeti/slang-test branch 2 times, most recently from 1969a3b to cefd7ce Compare March 3, 2026 09:36
@fischeti fischeti force-pushed the fischeti/slang-release branch 2 times, most recently from 1fcd658 to 2305000 Compare March 3, 2026 09:40
@fischeti fischeti force-pushed the fischeti/slang-test branch from 8de4262 to bc76fa5 Compare March 3, 2026 13:18
@fischeti fischeti force-pushed the fischeti/slang-release branch 2 times, most recently from c328420 to 424afab Compare March 3, 2026 16:02
@fischeti fischeti force-pushed the fischeti/slang-test branch 2 times, most recently from 7a4326d to 7fd67f2 Compare March 3, 2026 16:53
@fischeti fischeti force-pushed the fischeti/slang-release branch from 424afab to eb82630 Compare March 3, 2026 16:53
@fischeti fischeti force-pushed the fischeti/slang-test branch from 7fd67f2 to 13e08a0 Compare March 3, 2026 18:30
@fischeti fischeti force-pushed the fischeti/slang-release branch 5 times, most recently from a9828a8 to 4d7f2a6 Compare March 3, 2026 21:47
@fischeti fischeti force-pushed the fischeti/slang-release branch from 4d7f2a6 to 567acbd Compare March 3, 2026 21:52
@fischeti fischeti changed the title Release flow adaptions for slang ci(release): Migrate to cargo-dist and overhaul CI Mar 3, 2026
@fischeti fischeti marked this pull request as ready for review March 3, 2026 22:03
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