Repository navigation
Publish to crates.io as zudb, from a tag - #786
Merged
Merged
Conversation
The crate name zu is taken on crates.io, so every crate that goes up is zudb or zudb-*, which is what the overview already promised. The packages are renamed and the libraries are not: the workspace table names each one under its old key with `package = "zudb-..."`, and the inner crates keep `[lib] name = "zu_..."`, so no source outside the engine crate changes. The engine crate's library is zudb because that is what `use zudb::Database` in the README needs, so its own tests, benches and doctests say zudb. Fourteen crates are published: zudb, the twelve under it that it or the CLI reaches, and zudb-cli, which installs the zu binary. The internal pins are exact, so a version bump that misses one fails to resolve rather than publishing against the previous release. The release workflow gains three real steps. verify checks the tag against the workspace and the changelog and runs a full publish dry run, so a crate that does not build from its tarball stops the release before anything is uploaded. crates-io runs scripts/publish-crates.sh, which is rudb's: it asks the index what is up, excludes it, and waits out the new crate limit, so the first release is about an hour and a half once and a re-run finishes a partial one. The GitHub release is created after crates.io, with the changelog section as its notes and provenance on the archives. The token is a secret of the crates-io environment, which only a v* tag can deploy to, and sits in the environment of one step. CI gains a package job running the same dry run on every pull request. The rustdoc model keeps calling the engine crate zu, so model.json does not move. The semver gate skips a baseline that has no zudb package, which is only this change.
A feature on the command line is spelled package/feature, and the package is zudb-cli.
It is outside the workspace, so it names each package itself rather than through the workspace table.
#785 made zu1::props::fixed_octets public without regenerating docs/api/model.json, which is why api-model is red on main.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes a
v*tag publish the workspace to crates.io and create the GitHub release.Names.
zuis taken on crates.io, so packages becomezudb/zudb-*(asdocs/00-overview.mdalready says). Libraries keep theirzu_*names via[lib] nameandpackage =renames in[workspace.dependencies], so source outsidecrates/zuis unchanged.crates/zu's lib iszudb, matchinguse zudb::...in the README.-p zu*references in CI/scripts/docs are updated.Published (14): zudb, zudb-common, -encoding, -storage, -vector, -zu1, -sqlite, -s3, -query, -exec, -arrow, -json, -corpus, zudb-cli (installs
zu). Everything else stayspublish = false. Internal pins are exact=0.0.1.Release workflow
verify: tag == workspace version,CHANGELOG.mdhas the section,cargo publish --workspace --locked --dry-run. Nothing uploads until this passes.crates-io:scripts/publish-crates.sh(from tamnd/rudb) reads the sparse index, excludes what is up, and waits out the rate limits (new crate: 5 burst then 1/10 min; ~90 min for the first release). Re-running finishes a partial release. Stops cleanly on the 20/day cap.publish: GitHub release with the CHANGELOG section as notes, after crates.io, with build provenance. Rehearsals (workflow_dispatch) upload nothing.Secrets.
CARGO_REGISTRY_TOKENis a secret of thecrates-ioenvironment (deployable only fromv*tags), not a repo secret. It is exposed to one step and never printed.CI. New
packagejob runs the publish dry run on every PR. The semver gate skips when the baseline has nozudbpackage (only this PR).See
docs/releasing.md.