shipper (library)
shipper is the core library for reliable, resumable Rust workspace publishing.
It powers shipper-cli and is useful when you want to embed publish orchestration
into custom release tooling.
What this crate does
- Builds deterministic publish plans from workspace metadata.
- Runs preflight checks (git state, publishability, registry visibility, ownership checks).
- Executes publish flows with retry and backoff.
- Verifies registry visibility and readiness between dependency levels.
- Persists state, receipts, and event logs for resumable execution.
- Supports sequential and parallel publishing engines.
Public API map
plan::build_plan- build the dependency-first publish plan.engine::run_preflight- run checks without publishing.engine::run_publish- execute publish with state persistence.engine::run_resume- continue interrupted runs.engine::parallel::run_publish_parallel- publish dependency levels concurrently.config- load and merge.shipper.tomlsettings.types- domain types for plans, options, state, events, and receipts.
Minimal integration example
use Result;
use ;
use ;
use plan;
use ;
;
Not in scope
shipper does not decide version numbers, generate changelogs, tag releases,
or create GitHub releases. Pair it with your preferred versioning/release
workflow and use this crate to make publishing reliable.
More documentation
- Project overview: https://github.com/EffortlessMetrics/shipper#readme
- Configuration reference: https://github.com/EffortlessMetrics/shipper/blob/main/docs/configuration.md
- Failure modes: https://github.com/EffortlessMetrics/shipper/blob/main/docs/failure-modes.md