Skip to content

fix(docker): include experiments/ in builder so workspace manifest parses#235

Merged
WaylandYang merged 1 commit into
mainfrom
fix/dockerfile-experiments
Jun 8, 2026
Merged

fix(docker): include experiments/ in builder so workspace manifest parses#235
WaylandYang merged 1 commit into
mainfrom
fix/dockerfile-experiments

Conversation

@WaylandYang

Copy link
Copy Markdown
Contributor

Summary

The Dockerfile only copied crates ./crates into the builder stage, but the workspace Cargo.toml lists experiments/v0.4-* as members. Cargo refuses to parse the workspace manifest without their per-crate manifests present, so cargo build --release --bin forkd-controller died with No such file or directory on experiments/v0.4-uffd-wp-poc/Cargo.toml.

This broke release.yml's build + push Docker image job from v0.5.0 through v0.5.2 — the tarball, PyPI, and npm publishes all succeeded each release, but the ghcr.io controller image was never pushed.

Fix

Add COPY experiments ./experiments to the builder stage. Experiments aren't selected by --bin forkd-controller so they don't compile; cargo just needs them present to parse the workspace.

Verification (dev box)

$ docker build -t forkd-controller:test .
[builds clean]
$ docker images forkd-controller:test
forkd-controller   test   4b97d5a97b24   152MB
$ docker run --rm --entrypoint /usr/local/bin/forkd-controller forkd-controller:test --version
forkd-controller 0.5.2

Test plan

  • CI green
  • After merge: next v* tag push will exercise this in release.yml → ghcr.io/deeplethe/forkd-controller:vX.Y.Z gets pushed for the first time since v0.4

🤖 Generated with Claude Code

…rses

The Dockerfile only COPYed `crates ./crates`, but the workspace
`Cargo.toml` lists `experiments/v0.4-*` as members. Cargo refuses
to parse the workspace manifest without their per-crate manifests
present, so `cargo build --release --bin forkd-controller` died with
'No such file or directory' on `experiments/v0.4-uffd-wp-poc/Cargo.toml'.

This broke `release.yml`'s `build + push Docker image` job from v0.5.0
through v0.5.2 — the tarball, PyPI, and npm publishes all succeeded,
but the ghcr.io controller image was never pushed.

Fix: COPY the experiments dir into the builder. They're not selected
by `--bin forkd-controller` so they don't compile, but cargo can now
parse the manifest. Adds ~100 KB of source to the builder stage; the
final runtime image is unchanged.

Verified on dev box: image builds clean (152 MB), forkd-controller 0.5.2
runs from the image.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@WaylandYang WaylandYang merged commit c65593e into main Jun 8, 2026
2 checks passed
@WaylandYang WaylandYang deleted the fix/dockerfile-experiments branch June 8, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant