bake: use controller to build
With this change we are now passing a list of controller options to run a build and returns a map of responses and result context as bake can handle a list of targets. Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
11
bake/bake.go
11
bake/bake.go
@@ -15,7 +15,6 @@ import (
|
||||
composecli "github.com/compose-spec/compose-go/cli"
|
||||
"github.com/docker/buildx/bake/hclparser"
|
||||
"github.com/docker/buildx/build"
|
||||
cbuild "github.com/docker/buildx/controller/build"
|
||||
controllerapi "github.com/docker/buildx/controller/pb"
|
||||
"github.com/docker/buildx/util/buildflags"
|
||||
hcl "github.com/hashicorp/hcl/v2"
|
||||
@@ -908,18 +907,14 @@ func (t *Target) GetName(ectx *hcl.EvalContext, block *hcl.Block, loadDeps func(
|
||||
return value.AsString(), nil
|
||||
}
|
||||
|
||||
func TargetsToBuildOpt(m map[string]*Target, inp *Input) (map[string]build.Options, error) {
|
||||
m2 := make(map[string]build.Options, len(m))
|
||||
func TargetsToControllerOptions(m map[string]*Target, inp *Input) (map[string]controllerapi.BuildOptions, error) {
|
||||
m2 := make(map[string]controllerapi.BuildOptions, len(m))
|
||||
for k, v := range m {
|
||||
opts, err := toControllerOpt(v, inp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
bo, err := cbuild.ToBuildOpts(*opts, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m2[k] = *bo
|
||||
m2[k] = *opts
|
||||
}
|
||||
return m2, nil
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/docker/buildx/controller/pb"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@@ -390,7 +391,7 @@ func TestHCLCwdPrefix(t *testing.T) {
|
||||
_, ok := m["app"]
|
||||
require.True(t, ok)
|
||||
|
||||
_, err = TargetsToBuildOpt(m, &Input{})
|
||||
_, err = TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, "test", *m["app"].Dockerfile)
|
||||
@@ -421,7 +422,7 @@ func TestOverrideMerge(t *testing.T) {
|
||||
_, ok := m["app"]
|
||||
require.True(t, ok)
|
||||
|
||||
_, err = TargetsToBuildOpt(m, &Input{})
|
||||
_, err = TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, []string{"linux/arm", "linux/ppc64le"}, m["app"].Platforms)
|
||||
@@ -456,7 +457,7 @@ func TestReadContexts(t *testing.T) {
|
||||
_, ok := m["app"]
|
||||
require.True(t, ok)
|
||||
|
||||
bo, err := TargetsToBuildOpt(m, &Input{})
|
||||
bo, err := TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
|
||||
ctxs := bo["app"].Inputs.NamedContexts
|
||||
@@ -472,7 +473,7 @@ func TestReadContexts(t *testing.T) {
|
||||
_, ok = m["app"]
|
||||
require.True(t, ok)
|
||||
|
||||
bo, err = TargetsToBuildOpt(m, &Input{})
|
||||
bo, err = TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
|
||||
ctxs = bo["app"].Inputs.NamedContexts
|
||||
@@ -490,7 +491,7 @@ func TestReadContexts(t *testing.T) {
|
||||
_, ok = m["app"]
|
||||
require.True(t, ok)
|
||||
|
||||
bo, err = TargetsToBuildOpt(m, &Input{})
|
||||
bo, err = TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
|
||||
ctxs = bo["app"].Inputs.NamedContexts
|
||||
@@ -1325,7 +1326,7 @@ func TestHCLNullVars(t *testing.T) {
|
||||
_, ok := m["default"]
|
||||
require.True(t, ok)
|
||||
|
||||
_, err = TargetsToBuildOpt(m, &Input{})
|
||||
_, err = TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, map[string]*string{"bar": ptrstr("baz")}, m["default"].Args)
|
||||
require.Equal(t, map[string]*string{"com.docker.app.baz": ptrstr("foo")}, m["default"].Labels)
|
||||
@@ -1360,7 +1361,7 @@ func TestJSONNullVars(t *testing.T) {
|
||||
_, ok := m["default"]
|
||||
require.True(t, ok)
|
||||
|
||||
_, err = TargetsToBuildOpt(m, &Input{})
|
||||
_, err = TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, map[string]*string{"bar": ptrstr("baz")}, m["default"].Args)
|
||||
}
|
||||
@@ -1432,21 +1433,34 @@ func TestAttestDuplicates(t *testing.T) {
|
||||
require.Equal(t, []string{"type=sbom,foo=bar", "type=provenance,mode=max"}, m["default"].Attest)
|
||||
require.NoError(t, err)
|
||||
|
||||
opts, err := TargetsToBuildOpt(m, &Input{})
|
||||
opts, err := TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, map[string]*string{
|
||||
"sbom": ptrstr("type=sbom,foo=bar"),
|
||||
"provenance": ptrstr("type=provenance,mode=max"),
|
||||
require.Equal(t, []*pb.Attest{
|
||||
{
|
||||
Type: "sbom",
|
||||
Attrs: "type=sbom,foo=bar",
|
||||
},
|
||||
{
|
||||
Type: "provenance",
|
||||
Attrs: "type=provenance,mode=max",
|
||||
},
|
||||
}, opts["default"].Attests)
|
||||
|
||||
m, _, err = ReadTargets(ctx, []File{fp}, []string{"default"}, []string{"*.attest=type=sbom,disabled=true"}, nil)
|
||||
require.Equal(t, []string{"type=sbom,disabled=true", "type=provenance,mode=max"}, m["default"].Attest)
|
||||
require.NoError(t, err)
|
||||
|
||||
opts, err = TargetsToBuildOpt(m, &Input{})
|
||||
opts, err = TargetsToControllerOptions(m, &Input{})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, map[string]*string{
|
||||
"sbom": nil,
|
||||
"provenance": ptrstr("type=provenance,mode=max"),
|
||||
require.Equal(t, []*pb.Attest{
|
||||
{
|
||||
Type: "sbom",
|
||||
Disabled: true,
|
||||
Attrs: "type=sbom,disabled=true",
|
||||
},
|
||||
{
|
||||
Type: "provenance",
|
||||
Attrs: "type=provenance,mode=max",
|
||||
},
|
||||
}, opts["default"].Attests)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user