The workspace is packaged but not yet published to crates.io. Publishing is irreversible: a published version cannot be overwritten, only yanked. Read this page before running the workflow.
- A crates.io account with a verified email.
- A crates.io API token with the
publish-newandpublish-updatescopes. - The token stored as the
CARGO_REGISTRY_TOKENrepository secret: Settings → Secrets and variables → Actions → New repository secret. - The version in
[workspace.package](Cargo.toml) andCHANGELOG.mdmust agree, and the working tree must be clean.
Run the Publish workflow from main (the v0.1.0 tag predates the
workflow) with dry_run = true (the default). The crate source matches
v0.1.0; later commits on main are documentation, demo, and packaging
metadata changes. It executes:
cargo package --workspace --no-verifyThis produces .crate archives under target/package/ without contacting the
registry. To inspect a package:
cargo package -p devkit-core --no-verify
tar -tf target/package/devkit-core-0.1.0.crateCrates must be published after their dependencies are visible on crates.io:
devkit-coredevkit-configdevkit-xdrdevkit-rpcdevkit-contractdevkit-analysisdevkit-cli
The workflow waits 30 seconds between publishes so the crates.io index can expose each version before the next crate resolves it.
If the workflow cannot run, use the same order locally:
cargo login
cargo publish -p devkit-core --locked
sleep 30
cargo publish -p devkit-config --locked
sleep 30
cargo publish -p devkit-xdr --locked
sleep 30
cargo publish -p devkit-rpc --locked
sleep 30
cargo publish -p devkit-contract --locked
sleep 30
cargo publish -p devkit-analysis --locked
sleep 30
cargo publish -p devkit-cli --locked- Confirm every crate appears on crates.io.
- Install from crates.io:
cargo install devkit-cli --version 0.1.0 stellar-foundry version
- Update
README.md,docs/PROJECT_STATUS.md, andCHANGELOG.mdto say the crates are published. - Do not delete the
v0.1.0tag or the GitHub Release.
- The crate names
devkit-*are currently unclaimed on crates.io. - Do not publish from a dirty working tree; the workflow uses the checked-out commit.
- If a publish fails partway through, fix the cause and continue from the failed crate; already-published crates stay published.