fix(ci): dev-deps clone retry + shared build.sh sibling-mount fix #40
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/dev-deps-clone-retry"
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. Two CI infra fixes found while rolling ECO-38 out past the pilot:
dev-deps.sh: retry transient git clone/fetch failures. breadbar's first real dev-release run on main failed after ~3 minutes with no diagnosable cause (Forgejo's API exposes no job log endpoint). A clean local reproduction of the exact same steps succeeded without any code changes, and there was no other job running on the shared runner at the time. Wraps the initial clone and the owned-clone refresh fetch in a small retry helper (3 attempts, exponential backoff from 3s).
ci/build.sh: mount REPO_ROOT's parent, not REPO_ROOT itself. Discovered rolling dev-deps.sh out to breadbox, the first multi-crate-workspace consumer. dev-deps.sh's default DEV_DEPS_DIR is a true sibling of the app checkout, but the shared dockerized build script only ever bind-mounted the checkout itself, so breadbar's PR worked around that by forcing DEV_DEPS_DIR inside the checkout. That workaround breaks on any consumer that is itself a Cargo workspace (breadbox, breadclip, breadpad, breadsearch, breadarr, breadcast): Cargo attributes a sibling clone nested inside the checkout's own workspace directory tree to the OUTER workspace for field-inheritance purposes, failing with "workspace.package.edition was not defined" the instant the outer workspace doesn't define that field. Mounting the parent directory instead keeps the sibling clone a genuine, non-nested sibling on both sides of the bind mount, matching a developer's own local sibling checkout. Verified both the normal
--lockedrelease build (no dev-deps.sh involved) and a dev-mode build (dev-deps.sh with its default sibling DEV_DEPS_DIR) against a real breadbox checkout, dockerized, end to end.Consumers using the docker wrapper need no Cargo.toml or check.yml structural change for fix 2 beyond bumping their pinned
ci/bread-ecosystem.revonce this merges, and dropping anyDEV_DEPS_DIRoverride in favor of the script's default. breadbar itself is a single crate (no[workspace]), so it never hit this bug and is left as merged.fix(dev-deps): retry transient git clone/fetch failuresto fix(ci): dev-deps clone retry + shared build.sh sibling-mount fix