Преглед изворни кода

builder-next: make sure worker platforms normalized for containerd

These platforms are filled by default from containerd
introspection API and may not be normalized. Initializing
wrong platform in here results in incorrect platform
for BUILDPLATFORM and TARGETPLATFORM build-args for
Dockerfile frontend (and probably other side effects).

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Tonis Tiigi пре 1 година
родитељ
комит
a99bb24ea8
1 измењених фајлова са 6 додато и 0 уклоњено
  1. 6 0
      builder/builder-next/controller.go

+ 6 - 0
builder/builder-next/controller.go

@@ -10,6 +10,7 @@ import (
 	ctd "github.com/containerd/containerd"
 	"github.com/containerd/containerd/content/local"
 	ctdmetadata "github.com/containerd/containerd/metadata"
+	"github.com/containerd/containerd/platforms"
 	"github.com/containerd/containerd/snapshots"
 	"github.com/containerd/log"
 	"github.com/docker/docker/api/types"
@@ -105,6 +106,11 @@ func newSnapshotterController(ctx context.Context, rt http.RoundTripper, opt Opt
 		return nil, err
 	}
 
+	// make sure platforms are normalized moby/buildkit#4391
+	for i, p := range wo.Platforms {
+		wo.Platforms[i] = platforms.Normalize(p)
+	}
+
 	wo.GCPolicy = policy
 	wo.RegistryHosts = opt.RegistryHosts
 	wo.Labels = getLabels(opt, wo.Labels)