-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
infraCI/CD and project infraCI/CD and project infra
Description
Overview
Set up cargo-dist (now called dist) to handle the entire release pipeline automatically. This replaces the need for hand-written release workflows, install scripts, and package manager manifests.
What cargo-dist does for us (out of the box)
- Generates
.github/workflows/release.ymlautomatically - Builds optimized binaries for all platforms (Linux x86_64/ARM64, macOS Intel/Apple Silicon, Windows)
- Creates tarballs/zips with correct permissions
- Generates SHA256 checksums
- Creates GitHub Releases with changelogs
- Generates
install.sh(curl | sh) andinstall.ps1(irm | iex) installers - Homebrew formula generation
- npm installer package (for
npx morph) - Windows MSI installer
- Supports
cargo-binstallout of the box
Setup steps
- Install dist:
cargo install cargo-dist - Run
dist init --yesin the morph repo - Review generated config in
Cargo.tomlunder[workspace.metadata.dist] - Enable desired installers:
dist init(interactive — select shell, powershell, homebrew, npm, msi) - Test locally with
dist buildanddist plan - Commit generated
release.yml - Test on a PR (plan step runs automatically)
Installers to enable
- Shell script (curl | sh)
- PowerShell script (irm | iex)
- Homebrew formula
- npm package (optional — enables
npx morph) - MSI installer (optional — Windows GUI installer)
Build targets
x86_64-unknown-linux-gnux86_64-unknown-linux-muslaarch64-unknown-linux-gnux86_64-apple-darwinaarch64-apple-darwinx86_64-pc-windows-msvc
Acceptance
dist planshows correct build matrixdist buildproduces working binary for current platform- PR CI runs plan step successfully
- Tag push triggers full release workflow
Docs
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
infraCI/CD and project infraCI/CD and project infra