Nothing in this repository publishes automatically. Every outward action below
is a deliberate maintainer step. CI (.github/workflows/ci.yml) only builds,
lints, and tests; it never publishes.
The workspace ships a single version, sourced from [workspace.package].version
in the root Cargo.toml (currently 0.9.1). Bump it there once; every crate
inherits it.
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --lockedConfirm the version is correct:
grep -m1 '^version' Cargo.toml # [workspace.package] -> 0.9.1Pushing a vX.Y.Z tag triggers two workflows:
release.ymlbuildsrustyred-serverfor macOS (arm64 + x86_64), Linux (x86_64), and Windows, and attaches the archives to the GitHub Release.docker-publish.ymlbuilds the productionDockerfileand pushesghcr.io/travis-gilbert/rustyred:X.Y.Zand:latestto GHCR.
git tag v0.9.1
git push origin v0.9.1You can also run either workflow manually from the Actions tab
(workflow_dispatch).
The installer ecosystem is handled by cargo-dist. Config is staged under
[workspace.metadata.dist] in Cargo.toml.
cargo install cargo-dist # provides the `dist` binary
dist init # reads the staged config, pins dist-version
git add Cargo.toml .github/workflows/release.yml
git commit -m "ci(release): adopt cargo-dist installers"
git push && git tag v0.9.1 && git push origin v0.9.1dist init regenerates release.yml with the curl|sh installer, a Homebrew
formula, and an npm shim. It supersedes the hand-written binary-build workflow.
Only two crates are published; the five binaries are marked publish = false.
crates.io publishes are irreversible (you cannot unpublish, only yank).
Publish in dependency order:
cargo publish -p rustyred-core # the engine; must go first
cargo publish -p rusty_red_native # the root facade; depends on rustyred-corecargo publish enforces --locked semantics and rejects a dirty tree, so
commit everything first. After publishing, cargo add rustyred-core works for
downstream users and docs.rs builds the API reference.
rustyred-server, rustyred-mcp, rustyred-compat-server,
rustyred-resp-server, and rustyred-search are publish = false: they are
deployment/binary crates, distributed via the container image and the GitHub
Release binaries, not crates.io.