Skip to content

fix(e2e): compare config digests in the kind image check - #21

Merged
juancarlosm merged 2 commits into
mainfrom
fix/e2e-image-check-containerd-store
Oct 29, 2026
Merged

juancarlosm merged 2 commits into
mainfrom
fix/e2e-image-check-containerd-store

Conversation

@juancarlosm

@juancarlosm juancarlosm commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

E2E has failed on every run since 2026-10-26 at cluster-up with "The image load did NOT take effect". The load works; the check compares two different digests.

Changes

  • hack/cluster.sh verify_image_in_node: host side reads the config digest from docker save's manifest.json instead of docker image inspect .Id. With the containerd image store (runner default since 2026-10-26) .Id is the manifest digest; crictl reports the config digest. Evidence from run 40837806983: node sha256:6ac0bb3f… = buildx exporting config sha256:6ac0bb3f…; host .Id sha256:8f1b24d8… = exporting manifest sha256:8f1b24d8… (same for all three images).
  • dstack and postgres are pulled with crictl pull inside the node instead of docker pull + kind load: they are multi-arch, the containerd store keeps only the host platform, and kind's ctr import --all-platforms failed with content digest ... not found (second run of this PR).
  • crictl inspecti -o json <img>: crictl 1.33 (kind v0.31 node) reads a trailing -o as an image name.

Test Plan

  • Local kind v0.31, classic store: fresh image matches, rebuilt-not-loaded image is caught, reloaded image matches
  • CI E2E on the containerd store runner

🤖 Generated with Claude Code

juancarlosm and others added 2 commits October 29, 2026 09:08
Since 2026-10-26 the GitHub runners build with Docker's containerd image
store, where `docker image inspect .Id` is the manifest digest. crictl
reports the config digest, so verify_image_in_node failed every run even
though the load worked: on the failing run the node held exactly the
config digest buildx exported. Read the config digest from docker save's
manifest.json instead, which names it under either store.

Also pass -o before the image to crictl inspecti: the crictl in kind
v0.31 nodes (1.33) treats a trailing -o as an image name, so the node id
read as absent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Same runner change as the previous commit: these images are multi-arch,
the containerd image store keeps only the host platform after docker
pull, and kind load's ctr import --all-platforms then fails with
"content digest ... not found". The node pulls them with crictl, once:
an image already in the node is not pulled again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juancarlosm
juancarlosm merged commit 110a48e into main Oct 29, 2026
5 checks passed
@juancarlosm
juancarlosm deleted the fix/e2e-image-check-containerd-store branch October 29, 2026 08:33
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