Skip to content

Commit 1ae59ff

Browse files
committed
e2e: seed node image with skopeo to preserve its digest
GitHub moved the ubuntu-latest runner from Ubuntu 24.04 to 26.04, which upgraded podman from 4.9.3 to 5.7.0. Since then most of the bink e2e tests fail on every Kubernetes version with: Value for field 'Booted' failed to satisfy matcher. Value for field 'ImageDigest' failed to satisfy matcher. Expected "...a256:9566a5..." to equal "...a256:0136fd..." seed-node-image pulls the bootc image that the node disk image was installed from (by digest) and re-pushes it to the local bink registry with `podman push`. The tests take the "original" digest from the local registry (E2E_NODE_IMAGE_DIGEST) and expect the node's booted digest to match it. podman 4 pushed the OCI manifest unchanged, so both digests were sha256:9566a5.... podman 5 rewrites the manifest on push, so the local registry now holds sha256:0136fd... while the VM is still booted from sha256:9566a5.... Every test that checks the booted digest against the original image now times out. Tests that only check the update images still pass, because those images are built and pushed locally and their digests are read back from the registry. Copy the image directly from the source registry to the local registry with `skopeo copy --preserve-digests` so the manifest is transferred unchanged, independent of the podman version on the runner. The local podman tag is kept because build-update-image builds FROM localhost:5000/node:latest. Assisted-by: AI Signed-off-by: Alice Frosi <afrosi@redhat.com>
1 parent 7304f7b commit 1ae59ff

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

‎Makefile‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,15 +228,19 @@ undeploy: kustomize ## Undeploy controller from the K8s cluster specified in ~/.
228228
# Note the :latest tag here: this makes the pull policy be Always.
229229
IMG_BINK ?= registry.cluster.local:5000/bootc-operator-e2e:latest
230230

231+
# Copy with skopeo rather than `podman push`: the node disk image booted the
232+
# source digest, and podman 5 rewrites the manifest on push, which changes it.
231233
.PHONY: seed-node-image
232234
seed-node-image: ## Pull the bootc node image by digest and push to the bink registry.
233235
bink registry start
234236
podman pull $(BINK_NODE_DISK_IMAGE)
235237
bootc_img=$$(podman inspect --format '{{index .Config.Labels "bink.bootc-image"}}' $(BINK_NODE_DISK_IMAGE)) && \
236238
bootc_digest=$$(podman inspect --format '{{index .Config.Labels "bink.bootc-image-digest"}}' $(BINK_NODE_DISK_IMAGE)) && \
237239
podman pull "$$bootc_img@$$bootc_digest" && \
238-
podman tag "$$bootc_img@$$bootc_digest" localhost:5000/node:latest
239-
podman push --tls-verify=false localhost:5000/node:latest
240+
podman tag "$$bootc_img@$$bootc_digest" localhost:5000/node:latest && \
241+
bootc_repo=$${bootc_img%:*} && \
242+
skopeo copy --preserve-digests --dest-tls-verify=false \
243+
"docker://$$bootc_repo@$$bootc_digest" docker://localhost:5000/node:latest
240244

241245
.PHONY: start-bink
242246
start-bink: seed-node-image ## Start a bink cluster (idempotent).

0 commit comments

Comments
 (0)