ci: build dev track and PR checks against dependency main, keep releases on tag pins #39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/dev-deps-main"
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 ECO-38.
Adds
scripts/dev-deps.sh: run from a consumer app's checkout root, it finds every dependency in the app's Cargo.toml manifests whose source is git.breadway.dev, shallow-clones each distinct dependency repo's main into a sibling directory (orDEV_DEPS_DIRif set), writes a generated.cargo/config.tomlpatching the app's git dependencies to those clones' paths, and runscargo updatefor the patched crates so Cargo.lock matches. Adev-deps.lock.txtrecord of each dependency's resolved SHA is written for reproducibility. A clone the script creates is marked and refreshed in place on a later run; a pre-existing developer checkout (no marker) is reused as-is and never mutated. The script refuses to overwrite a.cargo/config.tomlit did not generate unless--forceis passed.--checkgives a dry run.Adds
scripts/lint-pins.sh: a shared CI guard, callable from any consumer repo, that fails if a git.breadway.dev dependency usesrevorbranchinstead oftag, or if a path dependency's target escapes the repo (the local dev-loop path-patch pattern leaking into a committed Cargo.toml, as distinct from an ordinary intra-workspace path reference within the same repo). Wired into this repo's owncheck.yml, sincebread-utilsdepends onbread-sharedfromBreadway/bread.docs/release-channels.mddocuments the full model under "Cross-repo dependency resolution": tag pins stay permanent in Cargo.toml, beta/stable builds are unchanged (--lockedagainst the tag), dev track and PR checks resolve to dependencymainvia this script, and the release order for a cross-repo change is tag the dependency, bump the consumer's pin in a PR, tag the consumer. CONTRIBUTING.md and AGENTS.md cross-reference it.Tested locally end to end against real clones of this repo and Breadway/bread (see the ECO-38 progress comment): fresh run, idempotent second run (refresh of an owned clone), untouched-developer-checkout reuse, refuse-to-clobber a foreign config plus
--force, and a fullcargo build --releaseof breadbar against both dependencies' main. Also confirmed a clean-clonecargo build --release --lockedstill resolves to the tagged pins with no.cargo/config.tomlpresent.The companion breadbar PR (feature/dev-deps-main there) wires
dev-release.yml/check.ymlto fetch these scripts from this repo's main, so it depends on this PR merging first.Breadway referenced this pull request2026-09-28 01:43:07 +08:00