Skip to main content
ClaudeWave

GoReleaser - but for Rust.

ToolsRegistry oficial2 estrellas0 forksRustApache-2.0Actualizado today
ClaudeWave Trust Score
74/100
· OK
Passed
  • Open-source license (MIT)
  • Actively maintained (<30d)
Last scanned: 6/11/2026
Get started
Method: Clone
Terminal
git clone https://github.com/tj-smith47/anodizer
1. Clone the repository.
2. Follow the README for installation and usage instructions.
Casos de uso

Resumen de Tools

<div align="center">

<img src="https://raw.githubusercontent.com/tj-smith47/anodizer/master/assets/logo.svg" width="200" alt="anodizer logo">

# anodizer

The release pipeline built for Rust — workspace-aware, reproducible, and signed by default.

[![CI](https://github.com/tj-smith47/anodizer/actions/workflows/ci.yml/badge.svg)](https://github.com/tj-smith47/anodizer/actions/workflows/ci.yml)
[![Release](https://github.com/tj-smith47/anodizer/actions/workflows/release.yml/badge.svg)](https://github.com/tj-smith47/anodizer/actions/workflows/release.yml)
[![Docs](https://github.com/tj-smith47/anodizer/actions/workflows/docs.yml/badge.svg)](https://github.com/tj-smith47/anodizer/actions/workflows/docs.yml)
[![Coverage](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/tj-smith47/anodizer/badges/coverage.json)](https://github.com/tj-smith47/anodizer/actions/workflows/ci.yml)
[![Crates.io](https://img.shields.io/crates/v/anodizer.svg)](https://crates.io/crates/anodizer)
[![License: MIT OR Apache-2.0](https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg)](#license)

</div>

Anodizer reads a declarative config file and runs your entire release from a single `anodizer release` command: build, archive, checksum, changelog, sign, release, publish, and announce. It's built around the Rust ecosystem — Cargo workspaces, `Cargo.lock`-aware version bumps, crates.io, and byte-reproducible artifacts.

Written by [Claude](https://claude.ai); maintained by us.

See [What works (with proof)](https://tj-smith47.github.io/anodizer/dogfooding/) for a per-feature status — every "live" claim links to a real published artifact you can verify yourself.

## Why anodizer?

Your release is a Cargo workspace — not a bag of loose binaries. anodizer is built that way from the ground up.

- **It speaks Cargo.** Per-crate release cadences, per-crate tags, and a tag resolver let a single crate and a thirty-crate monorepo share one config. `anodizer tag` and `anodizer bump` rewrite `Cargo.toml` *and* `Cargo.lock`, then commit and tag — locally by default, and (on `--push`) push the bump commit and tag atomically — no orphaned bump commit, no hand-rolled `git push`, no lockfile drift.
- **crates.io, published in the right order.** Dependency-aware ordering with sparse-index polling holds each crate until the ones it depends on have propagated — so a workspace publish never races itself into a transient "version not found."
- **Cross-compiles without the toolchain tax.** musl, glibc, Windows, and macOS from one machine via `cargo-zigbuild` or `cross`. No `rustup target add` rituals, no per-target CI shards to babysit.
- **Reproducible — and it proves it.** Deterministic artifacts by default, then `anodizer check determinism` rebuilds them and byte-compares. "Reproducible" becomes a fact your CI enforces, not a claim in your release notes.
- **Signing and attestation are first-class.** cosign + GPG for binaries, archives, checksums, and images, plus SLSA-style build provenance — wired in a few lines, not bolted on after a CVE scare.

Then the long tail that Rust authors actually hit: generated per-crate READMEs, `cargo-binstall` metadata derived straight from your config (no hand-maintained `pkg-url` that 404s), `version_files` to pin your docs and install scripts to the released version, and post-release install smoke tests that catch a broken artifact before your users do.

Already know GoReleaser? anodizer's `{{ .Field }}` template syntax will feel right at home. Moving from cargo-dist, release-plz, or cargo-release? The [migration guides](https://tj-smith47.github.io/anodizer/migration/) map your setup straight over.

## Features

**Build**
- Cross-platform builds via `cargo-zigbuild`, `cross`, or native `cargo build`
- Per-build hooks (pre/post), environment variables, feature flags, and target overrides
- UPX binary compression with per-target filtering
- Workspace support with per-crate independent release cadences

**Package**
- Archives in tar.gz, tar.xz, tar.zst, zip, gz, or raw binary format with OS-specific overrides
- Linux packages (.deb, .rpm, .apk, .archlinux, .ipk) via nFPM with full lifecycle scripts
- Snapcraft snaps with prime-dir architecture
- macOS DMG disk images and PKG installers
- Windows MSI and NSIS installers
- Flatpak bundles
- AppImage portable Linux applications
- Makeself self-extracting archives
- `curl | sh` install-script generation — a per-platform asset table derived from your build/archive config (no hand-maintained URLs to 404), with a checksum-verify gate
- Source RPMs (.src.rpm)
- Source archives with file filtering
- SBOM generation (CycloneDX/SPDX)
- Checksums with SHA-256, SHA-512, SHA3, BLAKE2b, BLAKE2s, BLAKE3, CRC32, MD5, and more — combined or split per-artifact sidecars in bare or coreutils (`shasum -c`) format

**Sign**
- GPG and cosign signing for binaries, archives, checksums, Docker images, and SBOMs
- Signed git tags (GPG or SSH) using your existing git signing key
- Multiple independent signing configurations
- Conditional signing via template expressions
- Build provenance attestations (SLSA-style) for binaries and artifacts

**Publish**
- GitHub/GitLab/Gitea Releases with asset uploads, draft/prerelease detection, header/footer templates
- crates.io with dependency-aware ordering and index polling
- Homebrew formula and cask generation
- Homebrew-core formula bump PRs (bump an existing `homebrew-core` formula)
- Scoop manifest generation
- Chocolatey package generation
- Winget manifest generation
- AUR PKGBUILD and .SRCINFO generation
- Krew plugin manifest generation
- Nix derivation generation
- SchemaStore catalog registration for editor autocomplete of your config files
- MCP registry server-manifest publishing (Model Context Protocol)
- Docker multi-arch images via `docker buildx`
- Blob storage uploads (S3, GCS, Azure)
- NPM per-platform binary packages and PyPI native binary wheels
- Keyless OIDC Trusted Publishing for crates.io, npm (with provenance), and PyPI — no stored registry tokens
- Artifactory, Cloudsmith, Fury, Docker Hub
- Custom publisher commands

**Announce**
- Discord, Slack, Telegram, Teams, Mattermost
- Email, Reddit, Twitter/X, Mastodon, Bluesky, LinkedIn
- OpenCollective, Discourse
- Generic webhooks with custom headers and templates

**Advanced**
- Tera templates (Jinja2-like) with GoReleaser-compatible `{{ .Field }}` syntax
- Nightly builds with date-based versioning
- Config includes for shared configuration
- Split/merge CI for fan-out parallel builds
- Monorepo support with independent workspaces
- Auto-tagging from commit message directives
- Reproducible builds with `mod_timestamp` and `builds_info`
- Version-string file syncing (`version_files`) to keep docs, scripts, and manifests in lockstep at tag
- Cross-publisher track promotion (`anodizer promote`) — flip an already-published artifact to a stable track (snapcraft channels, npm dist-tags, OCI floating tags, GitHub prerelease) with no rebuild
- Post-release verification with install smoke tests
- JSON Schema for editor autocomplete and validation

## Installation

### Homebrew (macOS/Linux)

```bash
brew install tj-smith47/tap/anodizer
```

### Cargo

```bash
cargo install anodizer
```

### From source

```bash
git clone https://github.com/tj-smith47/anodizer.git
cd anodizer
cargo install --path crates/cli
```

## Quick Start

```bash
# Generate a starter config from your Cargo workspace
anodizer init > .anodizer.yaml

# Validate your config
anodizer check

# Check that required tools are available
anodizer healthcheck

# Build a snapshot (no publishing)
anodizer release --snapshot

# Dry run (full pipeline, no side effects)
anodizer release --dry-run

# Bump crate versions from Conventional Commits — rewrites Cargo.toml + Cargo.lock,
# no tag (tag separately, or let the release workflow tag for you)
anodizer bump --dry-run --output json         # preview the per-crate plan as JSON
anodizer bump                                 # infer patch/minor/major per crate since its last tag
anodizer bump minor --package mycrate         # force a level for one crate
anodizer bump --workspace --commit --changelog  # bump every member, commit, refresh CHANGELOG.md
anodizer bump --pre rc.1                       # append a prerelease identifier (0.5.0-rc.1)

# Auto-tag from commit directives
# (Conventional Commits: feat: → minor, fix: → patch, BREAKING CHANGE: → major)
anodizer tag --dry-run                         # preview what tag would be created
anodizer tag --push --changelog                # tag + refresh changelog + push (triggers the release)
anodizer tag --sign --push                     # signed annotated tag (uses git user.signingkey)
anodizer tag --custom-tag v0.1.0               # force a tag value, bypassing bump derivation
anodizer tag --version 1.2.3 --crate mycrate   # pin an exact version for recovery (per-crate mode)
anodizer tag rollback "$GITHUB_SHA"            # delete anodize-managed tags at a SHA + revert the bump

# Resume a stalled release from a populated dist/ — no rebuild
anodizer continue                              # resume the publish-only pipeline after a transient failure
anodizer continue --merge                      # fan-in split-build workers, then sign/checksum/release/publish
anodizer continue --skip npm,announce          # resume but skip named stages/publishers

# Run only the publish stages (release / blob / publish) from a completed dist/
anodizer publish --publishers homebrew,scoop   # publish to a subset of configured publishers
anodizer publish --dry-run                     # preview the publish chain with no side effects

# Promote an already-published artifact to a stable track — no rebuild
anodizer promote --to stable                                  # promote the newest prerelease artifact
anodizer promote --to stable --from candidate --dry-run       # preview promoting from a named source track
anodizer promote --to stable --v
cargoclapcrates-ioreleaserelease-automationrust

Lo que la gente pregunta sobre anodizer

¿Qué es tj-smith47/anodizer?

+

tj-smith47/anodizer es tools para el ecosistema de Claude AI. GoReleaser - but for Rust. Tiene 2 estrellas en GitHub y se actualizó por última vez today.

¿Cómo se instala anodizer?

+

Puedes instalar anodizer clonando el repositorio (https://github.com/tj-smith47/anodizer) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar tj-smith47/anodizer?

+

Nuestro agente de seguridad ha analizado tj-smith47/anodizer y le ha asignado un Trust Score de 74/100 (tier: OK). Revisa el desglose completo de comprobaciones superadas y flags en esta página.

¿Quién mantiene tj-smith47/anodizer?

+

tj-smith47/anodizer es mantenido por tj-smith47. La última actividad registrada en GitHub es de today, con 0 issues abiertos.

¿Hay alternativas a anodizer?

+

Sí. En ClaudeWave puedes explorar tools similares en /categories/tools, ordenados por popularidad o actividad reciente.

Despliega anodizer en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: tj-smith47/anodizer
[![Featured on ClaudeWave](https://claudewave.com/api/badge/tj-smith47-anodizer)](https://claudewave.com/repo/tj-smith47-anodizer)
<a href="https://claudewave.com/repo/tj-smith47-anodizer"><img src="https://claudewave.com/api/badge/tj-smith47-anodizer" alt="Featured on ClaudeWave: tj-smith47/anodizer" width="320" height="64" /></a>

Más Tools

Alternativas a anodizer