fix(justfile): run create-release cargo lock-sync in docker #453

Merged
nrupard merged 1 commit from fix/BUNYIP-456-create-release-docker-cargo into main 2026-08-04 14:45:47 +02:00
Owner

What

create-release now runs the member-scoped cargo update lock-sync inside the pinned rust-builder-glibc image instead of on the host, and the redundant create-release-container recipe is deleted.

Why

Every bunyip dev box is deliberately toolchain-less (CLAUDE.md: "Dev boxes have no local Rust toolchain, so run just check-container"). So just create-release <bump> died at the cargo step with Command 'cargo' not found AFTER it had already created the release/vX.Y.Z branch and staged the version bump, leaving a half-done release to unwind by hand. The two recipes (create-release host / create-release-container docker) were kept in sync by hand per BUNYIP-292; the host variant served no actual box and was pure footgun + maintenance burden.

Change

  • create-release: added let repo = justfile_directory(), a which docker fail-fast guard that trips BEFORE any git mutation, and swapped the host cargo update line for the containerized docker run ... rust-builder-glibc ... cargo update --package ... block (mirrors check-container's registry + target mounts; runs online so cargo can resolve the dunite-core git dep). Every git / fj step still runs on the host so it keeps the host ssh key + fj keys.json.
  • Deleted create-release-container (now identical) and its "keep in sync" contract.
  • CLAUDE.md: documents the single docker-by-default recipe; dropped the create-release-container reference (its only mention).

Verify

  • just --list parses cleanly; the [release] group shows the single create-release recipe with a one-line summary.
  • The cargo step is byte-identical to the previously-working create-release-container block, so its behaviour is unchanged.

Closes BUNYIP-456.

## What `create-release` now runs the member-scoped `cargo update` lock-sync inside the pinned `rust-builder-glibc` image instead of on the host, and the redundant `create-release-container` recipe is deleted. ## Why Every bunyip dev box is deliberately toolchain-less (`CLAUDE.md`: "Dev boxes have no local Rust toolchain, so run `just check-container`"). So `just create-release <bump>` died at the cargo step with `Command 'cargo' not found` AFTER it had already created the `release/vX.Y.Z` branch and staged the version bump, leaving a half-done release to unwind by hand. The two recipes (`create-release` host / `create-release-container` docker) were kept in sync by hand per BUNYIP-292; the host variant served no actual box and was pure footgun + maintenance burden. ## Change - `create-release`: added `let repo = justfile_directory()`, a `which docker` fail-fast guard that trips BEFORE any git mutation, and swapped the host `cargo update` line for the containerized `docker run ... rust-builder-glibc ... cargo update --package ...` block (mirrors `check-container`'s registry + target mounts; runs online so cargo can resolve the dunite-core git dep). Every git / fj step still runs on the host so it keeps the host ssh key + fj `keys.json`. - Deleted `create-release-container` (now identical) and its "keep in sync" contract. - `CLAUDE.md`: documents the single docker-by-default recipe; dropped the `create-release-container` reference (its only mention). ## Verify - `just --list` parses cleanly; the `[release]` group shows the single `create-release` recipe with a one-line summary. - The cargo step is byte-identical to the previously-working `create-release-container` block, so its behaviour is unchanged. Closes BUNYIP-456.
fix(justfile): run create-release cargo lock-sync in docker
All checks were successful
E2E PR gate / Install + reachability (no deployment secrets) (pull_request) Successful in 14s
Check / fmt + clippy + build + tests (pull_request) Successful in 12m49s
Create release / Create release from merged PR (pull_request) Has been skipped
a0396ef14c
create-release ran the member-scoped `cargo update` on the HOST, but every bunyip dev box is deliberately toolchain-less (CLAUDE.md: "Dev boxes have no local Rust toolchain, so run just check-container"). So `just create-release <bump>` died at the cargo step with `Command 'cargo' not found` AFTER it had already created the release/vX.Y.Z branch and staged the version bump, leaving a half-done release to unwind by hand.

Fold the containerized lock-sync into create-release: run `cargo update` inside the pinned ghcr.io/niceguyit/rust-builder-glibc image (mirroring check-container's registry + target cache mounts, online so cargo can resolve the dunite-core git dep), guarded by a which-docker fail-fast that trips BEFORE any git mutation. This is the exact step create-release-container used to run; delete that now-redundant recipe and its hand-maintained "keep the two recipes in sync" contract. Every git / fj step still runs on the host so it keeps using the host ssh key + fj keys.json. Update CLAUDE.md to document the single docker-by-default recipe.

#BUNYIP-456

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: nrupard <natrsmith11@gmail.com>
nrupard scheduled this pull request to auto merge when all checks succeed 2026-08-04 14:37:30 +02:00
nrupard deleted branch fix/BUNYIP-456-create-release-docker-cargo 2026-08-04 14:45:48 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/bunyip!453
No description provided.