Cargo (Rust)
Publish Rust crates to crates.io using Universal Release.
Detectionβ
Automatically detected when Cargo.toml exists.
Configurationβ
ecosystems:
cargo:
enabled: true
registry: https://crates.io
validation:
build: true
test: true
clippy: true
rustfmt: true
Credentialsβ
Store your crates.io token:
release secrets set CARGO_TOKEN
Get your token from crates.io/settings/tokens.
Publishingβ
# Publish with validation
release publish --ecosystem cargo
# Dry run
release publish --ecosystem cargo --dry-run
Validationβ
Universal Release validates:
- β
Cargo.tomlexists and is valid - β
Build succeeds (
cargo build --release) - β
Tests pass (
cargo test) - β
Clippy checks pass (
cargo clippy) - β
Formatting is correct (
cargo fmt --check)
Rollbackβ
Cargo supports yanking:
release rollback 1.2.3 --strategy yank
This runs cargo yank --version 1.2.3.
Best Practicesβ
Configure Cargo.tomlβ
[package]
name = "my-crate"
version = "1.0.0"
edition = "2021"
license = "MIT"
description = "A brief description"
repository = "https://github.com/user/repo"
documentation = "https://docs.rs/my-crate"
[dependencies]
# Your dependencies
Use Workspace for Monoreposβ
[workspace]
members = ["crates/*"]
Version Managementβ
Cargo version is read from Cargo.toml:
# Show current version
release version
# Bump version (updates Cargo.toml)
release version --bump minor
# Set specific version
release version --set 2.0.0
Next Stepsβ
- Version Management - Version strategies
- Configuration - Advanced setup