workspace, ci, docs: make every crate publishable and package them in CI #197
No reviewers
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis!197
Loading…
Reference in a new issue
No description provided.
Delete branch "ci/publish-dry-run"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #160 (policy amendment). Builds on #196 (merged):
verify.pychecks the workspace version only on the binary crates.crates/is publishable. The workspace no longer setspublish = false, and onlytests/(felis-workspace-tests) keeps it.version = "0.1.0". felis-cli, felis-client and felis-daemon keep the app version (version.workspace = true). The internal[workspace.dependencies]entries carryversion = "0.1.0"next topath.pathonly, socargo packagedrops them. A versioned one would leave the felis-client-core ↔ felis-daemon cycle unpackageable.Cargo.lockandfuzz/Cargo.lockare regenerated.just publish-dry-run(cargo publish --workspace --dry-run --allow-dirty), run byjust checkand pr.yml's build job. It packages all 12 crates and builds each against the others in publish order, in about 3 minutes here. If a version already exists on crates.io the dry-run only warns, somainstays green after a release.What the gate does not prove: it builds dependents against the local copy of each library. Once a library is on crates.io, a change to it that keeps the published version would still pass. The rule that a library whose package contents changed takes a new version before any dependent is published belongs to the release-automation item, which must land before the first real publish.
Local:
cargo build --locked, lint, deny, docs-links, publish-dry-run, nextest (4329 passed), selftest, test-msrv, prose-check. Reviews (pi, sol): design PASS after three rounds, implementation PASS after two.722c63fe081b2e030396