mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-03 18:07:41 +08:00
Merge pull request #1206 from jedevc/init-builder-errors
buildx: log errors in initializing builders
This commit is contained in:
commit
c1fbebe73f
@ -134,6 +134,11 @@ func runCreate(dockerCli command.Cli, in createOptions, args []string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngOriginal := ng
|
||||||
|
if ngOriginal != nil {
|
||||||
|
ngOriginal = ngOriginal.Copy()
|
||||||
|
}
|
||||||
|
|
||||||
if ng == nil {
|
if ng == nil {
|
||||||
ng = &store.NodeGroup{
|
ng = &store.NodeGroup{
|
||||||
Name: name,
|
Name: name,
|
||||||
@ -224,6 +229,30 @@ func runCreate(dockerCli command.Cli, in createOptions, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngi := &nginfo{ng: ng}
|
||||||
|
|
||||||
|
timeoutCtx, cancel := context.WithTimeout(ctx, 20*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
if err = loadNodeGroupData(timeoutCtx, dockerCli, ngi); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, info := range ngi.drivers {
|
||||||
|
if err := info.di.Err; err != nil {
|
||||||
|
err := errors.Errorf("failed to initialize builder %s (%s): %s", ng.Name, info.di.Name, err)
|
||||||
|
var err2 error
|
||||||
|
if ngOriginal == nil {
|
||||||
|
err2 = txn.Remove(ng.Name)
|
||||||
|
} else {
|
||||||
|
err2 = txn.Save(ngOriginal)
|
||||||
|
}
|
||||||
|
if err2 != nil {
|
||||||
|
logrus.Warnf("Could not rollback to previous state: %s", err2)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if in.use && ep != "" {
|
if in.use && ep != "" {
|
||||||
current, err := storeutil.GetCurrentEndpoint(dockerCli)
|
current, err := storeutil.GetCurrentEndpoint(dockerCli)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -234,15 +263,6 @@ func runCreate(dockerCli command.Cli, in createOptions, args []string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngi := &nginfo{ng: ng}
|
|
||||||
|
|
||||||
timeoutCtx, cancel := context.WithTimeout(ctx, 20*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if err = loadNodeGroupData(timeoutCtx, dockerCli, ngi); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if in.bootstrap {
|
if in.bootstrap {
|
||||||
if _, err = boot(ctx, ngi); err != nil {
|
if _, err = boot(ctx, ngi); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -110,6 +110,44 @@ func (ng *NodeGroup) Update(name, endpoint string, platforms []string, endpoints
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ng *NodeGroup) Copy() *NodeGroup {
|
||||||
|
nodes := make([]Node, len(ng.Nodes))
|
||||||
|
for i, node := range ng.Nodes {
|
||||||
|
nodes[i] = *node.Copy()
|
||||||
|
}
|
||||||
|
return &NodeGroup{
|
||||||
|
Name: ng.Name,
|
||||||
|
Driver: ng.Driver,
|
||||||
|
Nodes: nodes,
|
||||||
|
Dynamic: ng.Dynamic,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *Node) Copy() *Node {
|
||||||
|
platforms := []specs.Platform{}
|
||||||
|
copy(platforms, n.Platforms)
|
||||||
|
flags := []string{}
|
||||||
|
copy(flags, n.Flags)
|
||||||
|
driverOpts := map[string]string{}
|
||||||
|
for k, v := range n.DriverOpts {
|
||||||
|
driverOpts[k] = v
|
||||||
|
}
|
||||||
|
files := map[string][]byte{}
|
||||||
|
for k, v := range n.Files {
|
||||||
|
vv := []byte{}
|
||||||
|
copy(vv, v)
|
||||||
|
files[k] = vv
|
||||||
|
}
|
||||||
|
return &Node{
|
||||||
|
Name: n.Name,
|
||||||
|
Endpoint: n.Endpoint,
|
||||||
|
Platforms: platforms,
|
||||||
|
Flags: flags,
|
||||||
|
DriverOpts: driverOpts,
|
||||||
|
Files: files,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (ng *NodeGroup) validateDuplicates(ep string, idx int) error {
|
func (ng *NodeGroup) validateDuplicates(ep string, idx int) error {
|
||||||
i := 0
|
i := 0
|
||||||
for _, n := range ng.Nodes {
|
for _, n := range ng.Nodes {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user