From 1cca41b81ae9bed1ad8c31dc85ff15dc781468eb Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Wed, 3 Nov 2021 23:03:38 -0700 Subject: [PATCH] build: support insecure export option for multi-node build Signed-off-by: Tonis Tiigi --- build/build.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/build/build.go b/build/build.go index 047ac9be..1783e087 100644 --- a/build/build.go +++ b/build/build.go @@ -21,6 +21,7 @@ import ( "github.com/docker/buildx/driver" "github.com/docker/buildx/util/imagetools" "github.com/docker/buildx/util/progress" + "github.com/docker/buildx/util/resolver" "github.com/docker/cli/opts" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" @@ -686,6 +687,7 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do wg.Add(len(dps)) var pushNames string + var insecurePush bool eg.Go(func() (err error) { defer func() { @@ -732,9 +734,25 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do imageopt = drivers[dp.driverIndex].ImageOpt break } + names := strings.Split(pushNames, ",") + + if insecurePush { + insecureTrue := true + httpTrue := true + nn, err := reference.ParseNormalizedNamed(names[0]) + if err != nil { + return err + } + imageopt.RegistryConfig = map[string]resolver.RegistryConfig{ + reference.Domain(nn): { + Insecure: &insecureTrue, + PlainHTTP: &httpTrue, + }, + } + } + itpull := imagetools.New(imageopt) - names := strings.Split(pushNames, ",") dt, desc, err := itpull.Combine(ctx, names[0], descs) if err != nil { return err @@ -790,6 +808,9 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do if err != nil { return err } + if ok, _ := strconv.ParseBool(e.Attrs["registry.insecure"]); ok { + insecurePush = true + } e.Attrs["name"] = names e.Attrs["push-by-digest"] = "true" so.Exports[i].Attrs = e.Attrs