oscerd opened a new pull request, #24049:
URL: https://github.com/apache/camel/pull/24049

   ## Problem
   
   `make ... images-push-all` in `dsl/camel-jbang/camel-jbang-container` fails 
during the 4.20.0 release with:
   
   ```
   docker.io/apache/camel-jbang:4.20.0-arm64 is a manifest list
   make[1]: *** [Makefile:81: images-push] Error 1
   ```
   
   The `images-push` target assembled the per-arch tags into the multi-arch tag 
with `docker manifest create`. On a host using the **containerd image store** 
(the default in recent Docker, e.g. 29.x), `docker buildx build --load` stores 
each built image as an **OCI image index** 
(`application/vnd.oci.image.index.v1+json`) — even for a single platform — and 
additionally attaches a buildx provenance **attestation manifest**. The pushed 
`:VERSION-<arch>` tags are therefore manifest lists, and `docker manifest 
create` refuses manifest-list members, hence the failure. (The Makefile worked 
under the classic image store, where `--load` yields a plain image manifest.)
   
   ## Fix
   
   Replace the `docker manifest create` loop + `docker manifest push --purge` 
with `docker buildx imagetools create`, which:
   
   - accepts **index sources** and merges their child manifests,
   - preserves the buildx attestations, and
   - pushes the resulting manifest list directly (so no separate `docker 
manifest push` is needed).
   
   This works on both the classic and the containerd image stores.
   
   ```diff
        for i in $(ARCH_VERSIONS); do \
                docker push $(IMAGE_PUSH)-$$i ; \
   -            docker manifest create $(IMAGE_PUSH) -a $(IMAGE_PUSH)-$$i; \
        done
   -    docker manifest push $(IMAGE_PUSH) --purge
   +    docker buildx imagetools create -t $(IMAGE_PUSH) \
   +            $(foreach arch,$(ARCH_VERSIONS),$(IMAGE_PUSH)-$(arch))
   ```
   
   The same `images-push` target is reused by `images-push-all` for the bare 
`:VERSION`, `:VERSION-17-jdk` and `:VERSION-21-jdk` tags, so all three are 
covered by this one change.
   
   ## Verification
   
   Expansion verified without publishing:
   
   ```
   $ make -n CAMEL_VERSION=4.20.0 images-push
   ...
   docker buildx imagetools create -t docker.io/apache/camel-jbang:4.20.0 \
        docker.io/apache/camel-jbang:4.20.0-amd64 
docker.io/apache/camel-jbang:4.20.0-arm64
   ```
   
   The real push to the official `docker.io/apache/camel-jbang` repo is 
intentionally left to the release operator.
   
   ---
   _Generated by Claude Code on behalf of Andrea Cosentino_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to