Skip to main content

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

  1. Install anodizer: cargo install anodizer
  2. Run anodizer init to generate a config from your workspace
  3. Add your desired publishing targets (Homebrew, Scoop, etc.)
  4. Remove cargo-dist config from your Cargo.toml ([workspace.metadata.dist])
  5. Replace the cargo-dist GitHub Actions workflow with an anodizer workflow — the tj-smith47/anodizer-action is the direct counterpart to cargo-dist's generated workflow
  6. Run anodizer release --dry-run to 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.