From 32895b0e8df619b88afac5617558b8cede11d6d6 Mon Sep 17 00:00:00 2001 From: Neaj Morshad Date: Thu, 11 Dec 2025 19:51:08 +0600 Subject: [PATCH 1/2] Skip crane mutate for qdrant Signed-off-by: Neaj Morshad --- cmd/build-image/main.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cmd/build-image/main.go b/cmd/build-image/main.go index 4569133de..00814296d 100644 --- a/cmd/build-image/main.go +++ b/cmd/build-image/main.go @@ -395,12 +395,16 @@ func Build(sh *shell.Session, libRepoURL, repoURL string, cherrypicks []string, } // > crane mutate ghcr.io/appscode-images/alpine:3.17.3_20231012 -a abc=xyz3 --tag ghcr.io/appscode-images/alpine:3.17.3_20231012 - args = []any{"mutate", img, "--tag=" + img} - args = append(args, "-a", KeyImageSource+"="+repoURL) - args = append(args, "-a", KeyImageRevision+"="+lib.LastCommitSHA(sh)) - err = sh.Command("crane", args...).Run() - if err != nil { - return err + // Skip crane mutate for qdrant - its Dockerfile uses multi-platform FROM instructions (BUILDPLATFORM) + // which creates manifest indexes that crane mutate doesn't support. Qdrant Dockerfile already has OCI labels. + if name != "qdrant" { + args = []any{"mutate", img, "--tag=" + img} + args = append(args, "-a", KeyImageSource+"="+repoURL) + args = append(args, "-a", KeyImageRevision+"="+lib.LastCommitSHA(sh)) + err = sh.Command("crane", args...).Run() + if err != nil { + return err + } } } From 5ad497dac85f31ba68cbc5a89ce4c8bd97871aa8 Mon Sep 17 00:00:00 2001 From: Neaj Morshad Date: Thu, 11 Dec 2025 20:44:42 +0600 Subject: [PATCH 2/2] update Signed-off-by: Neaj Morshad --- cmd/build-image/main.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/build-image/main.go b/cmd/build-image/main.go index 00814296d..9c6c895de 100644 --- a/cmd/build-image/main.go +++ b/cmd/build-image/main.go @@ -381,8 +381,11 @@ func Build(sh *shell.Session, libRepoURL, repoURL string, cherrypicks []string, args = append(args, "-f", b.File) } // Qdrant: build with non-root user (USER_ID=1000) + // Also add --provenance=false --sbom=false to prevent buildx from creating manifest lists + // for single-arch images (required for docker manifest create to work) if name == "qdrant" { args = append(args, "--build-arg", "USER_ID=1000") + args = append(args, "--provenance=false", "--sbom=false") } args = append(args, ".") err = sh.Command("docker", args...).Run()