Skip to main content

crates.io

Publish crates to the Rust package registry

Publish your crate to crates.io with dependency-aware ordering.

Classification

GroupRequired (default)RollbackToken scope
Submittertruecargo yank (version stays reserved; consumers cannot install fresh)CARGO_REGISTRY_TOKEN yank

See Release resilience for the full classification table and the Submitter gate semantics.

Minimal config

crates:
  - name: myapp
    publish:
      cargo: {}     # presence opts in (no `enabled` field, no bool shorthand)

To opt out without removing the block, use skip: (peer-publisher convention):

publish:
  cargo:
    skip: true

Config options

publish:
  cargo:
    # ----- crates.io–specific (anodizer-original) -----
    index_timeout: 300        # seconds to wait for crates.io index update

    # ----- registry selection -----
    registry: my-alt-registry # name from ~/.cargo/config.toml
    index: https://...        # registry index URL

    # ----- verify / dirty -----
    no_verify: false          # skip the local cargo build verification
    allow_dirty: true         # default: true (anodize tag dirties the tree)

    # ----- features -----
    features: ["telemetry"]
    all_features: false
    no_default_features: false

    # ----- compilation -----
    target: x86_64-unknown-linux-gnu
    target_dir: ./target
    jobs: 4
    keep_going: false

    # ----- manifest -----
    manifest_path: ./Cargo.toml
    locked: true
    offline: false
    frozen: false

    # ----- peer-publisher pattern -----
    skip: false               # template-aware: bool, "true"/"false", or "auto"

Workspace ordering

When publishing multiple workspace crates, anodizer resolves dependency order using topological sorting. If crate B depends on crate A, A is published first and anodizer waits for the crates.io index to update before publishing B.

Authentication

Set CARGO_REGISTRY_TOKEN:

export CARGO_REGISTRY_TOKEN="cio_..."
anodizer release