From cargo-dist
Migrate from cargo-dist to anodizer
cargo-dist focuses on binary distribution — building and packaging pre-built binaries with generated installers. Anodizer is a full release pipeline that includes distribution but also covers changelog, GitHub releases, package manager publishing, Docker, signing, and announcements.
When to switch
Consider anodizer if you need:
- Publishing to Homebrew, Scoop, crates.io, or AUR
- Docker image builds as part of the release
- Changelog generation from conventional commits
- GPG or cosign signing
- Announcements (Discord, Slack, webhooks)
- More control over archive formats and naming
Migration steps
- Install anodizer:
cargo install anodizer - Run
anodizer initto generate a config from your workspace - Add your desired publishing targets (Homebrew, Scoop, etc.)
- Remove cargo-dist config from your
Cargo.toml([workspace.metadata.dist]) - Replace the cargo-dist GitHub Actions workflow with an anodizer workflow — the
tj-smith47/anodizer-actionis the direct counterpart to cargo-dist's generated workflow - Run
anodizer release --dry-runto verify
Replacement GitHub Actions workflow
Replace .github/workflows/release.yml generated by cargo-dist with:
name: Release
on:
push:
tags: ["v*"]
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: tj-smith47/anodizer-action@v1
with:
auto-install: true
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
For fan-out cross-platform builds (cargo-dist's default), see Split/Merge.