builder: fix default docker context behavior

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2022-12-07 08:51:22 +01:00 committed by CrazyMax
parent fe8d5627e0
commit ebdd8834a9
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7
3 changed files with 18 additions and 23 deletions

View File

@ -97,9 +97,6 @@ func New(dockerCli command.Cli, opts ...Option) (_ *Builder, err error) {
return nil, err
}
}
if b.NodeGroup.Name == "default" && len(b.NodeGroup.Nodes) == 1 {
b.NodeGroup.Name = b.NodeGroup.Nodes[0].Endpoint
}
if b.opts.validate {
if err = b.Validate(); err != nil {
return nil, err
@ -111,16 +108,16 @@ func New(dockerCli command.Cli, opts ...Option) (_ *Builder, err error) {
// Validate validates builder context
func (b *Builder) Validate() error {
if b.NodeGroup.Name == "default" && b.NodeGroup.Name != b.opts.dockerCli.CurrentContext() {
return errors.Errorf("use `docker --context=default buildx` to switch to default context")
}
list, err := b.opts.dockerCli.ContextStore().List()
if err != nil {
return err
}
for _, l := range list {
if l.Name == b.NodeGroup.Name && b.NodeGroup.Name != "default" {
return errors.Errorf("use `docker --context=%s buildx` to switch to context %q", b.NodeGroup.Name, b.NodeGroup.Name)
if b.NodeGroup.DockerContext {
list, err := b.opts.dockerCli.ContextStore().List()
if err != nil {
return err
}
currentContext := b.opts.dockerCli.CurrentContext()
for _, l := range list {
if l.Name == b.Name && l.Name != currentContext {
return errors.Errorf("use `docker --context=%s buildx` to switch to context %q", l.Name, l.Name)
}
}
}
return nil

View File

@ -12,10 +12,11 @@ import (
)
type NodeGroup struct {
Name string
Driver string
Nodes []Node
Dynamic bool
Name string
Driver string
Nodes []Node
Dynamic bool
DockerContext bool
}
type Node struct {

View File

@ -79,10 +79,6 @@ func GetNodeGroup(txn *store.Txn, dockerCli command.Cli, name string) (*store.No
return ng, nil
}
if name == "default" {
name = dockerCli.CurrentContext()
}
list, err := dockerCli.ContextStore().List()
if err != nil {
return nil, err
@ -90,13 +86,14 @@ func GetNodeGroup(txn *store.Txn, dockerCli command.Cli, name string) (*store.No
for _, l := range list {
if l.Name == name {
return &store.NodeGroup{
Name: "default",
Name: name,
Nodes: []store.Node{
{
Name: "default",
Name: name,
Endpoint: name,
},
},
DockerContext: true,
}, nil
}
}