Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 35 additions & 8 deletions docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,6 @@ func (p Plugin) Exec() error {

if p.Builder.Driver != "" && p.Builder.Driver != defaultDriver {
var (
raw []byte
err error
)

Expand All @@ -310,13 +309,27 @@ func (p Plugin) Exec() error {
updateImageVersion(&p.Builder.DriverOptsNew, p.Builder.BuildkitVersion)
}
createCmd := cmdSetupBuildx(p.Builder, p.Builder.DriverOptsNew)
raw, err = createCmd.Output()
if err != nil {
// Enhanced debug logging for buildx create (new driver opts path)
fmt.Printf("[DEBUG] buildx create command (new opts): %s\n", createCmd.String())
fmt.Printf("[DEBUG] builder config: driver=%q name=%q daemonConfig=%q remoteConn=%q driverOptsNew=%v useLoadedBuildkit=%v buildkitVersion=%q tlsHandshakeTimeout=%q responseHeaderTimeout=%q\n",
p.Builder.Driver, p.Builder.Name, p.Builder.DaemonConfig, p.Builder.RemoteConn, p.Builder.DriverOptsNew, p.Builder.UseLoadedBuildkit, p.Builder.BuildkitVersion, p.Builder.BuildkitTLSHandshakeTimeout, p.Builder.BuildkitResponseHeaderTimeout)
var stdoutBufNew, stderrBufNew bytes.Buffer
createCmd.Stdout = &stdoutBufNew
createCmd.Stderr = &stderrBufNew
if err = createCmd.Run(); err != nil {
fmt.Printf("[ERROR] buildx create (new opts) failed\n")
fmt.Printf("[ERROR] Command: %s\n", createCmd.String())
if out := stdoutBufNew.String(); out != "" {
fmt.Printf("[ERROR] stdout:\n%s\n", out)
}
if errOut := stderrBufNew.String(); errOut != "" {
fmt.Printf("[ERROR] stderr:\n%s\n", errOut)
}
fmt.Printf("Unable to setup buildx with new driver opts: %s\n", err)
// Mark that the fallback will be used
shouldFallback = true
} else {
p.Builder.Name = strings.TrimSuffix(string(raw), "\n")
p.Builder.Name = strings.TrimSuffix(stdoutBufNew.String(), "\n")
// If builder creation is successful, inspect the builder
inspectCmd := cmdInspectBuildx(p.Builder.Name)
if err := inspectCmd.Run(); err != nil {
Expand All @@ -342,11 +355,25 @@ func (p Plugin) Exec() error {
updateImageVersion(&p.Builder.DriverOpts, version)
}
createCmd := cmdSetupBuildx(p.Builder, p.Builder.DriverOpts)
raw, err = createCmd.Output()
if err != nil {
return fmt.Errorf("error while creating buildx builder: %s and err: %s", string(raw), err)
// Enhanced debug logging for buildx create (fallback path)
fmt.Printf("[DEBUG] buildx create command: %s\n", createCmd.String())
fmt.Printf("[DEBUG] builder config: driver=%q name=%q daemonConfig=%q remoteConn=%q driverOpts=%v useLoadedBuildkit=%v buildkitVersion=%q tlsHandshakeTimeout=%q responseHeaderTimeout=%q\n",
p.Builder.Driver, p.Builder.Name, p.Builder.DaemonConfig, p.Builder.RemoteConn, p.Builder.DriverOpts, p.Builder.UseLoadedBuildkit, p.Builder.BuildkitVersion, p.Builder.BuildkitTLSHandshakeTimeout, p.Builder.BuildkitResponseHeaderTimeout)
var stdoutBuf, stderrBuf bytes.Buffer
createCmd.Stdout = &stdoutBuf
createCmd.Stderr = &stderrBuf
if err = createCmd.Run(); err != nil {
fmt.Printf("[ERROR] buildx create failed\n")
fmt.Printf("[ERROR] Command: %s\n", createCmd.String())
if out := stdoutBuf.String(); out != "" {
fmt.Printf("[ERROR] stdout:\n%s\n", out)
}
if errOut := stderrBuf.String(); errOut != "" {
fmt.Printf("[ERROR] stderr:\n%s\n", errOut)
}
return fmt.Errorf("error while creating buildx builder: %w", err)
}
p.Builder.Name = strings.TrimSuffix(string(raw), "\n")
p.Builder.Name = strings.TrimSuffix(stdoutBuf.String(), "\n")
inspectCmd := cmdInspectBuildx(p.Builder.Name)
if err := inspectCmd.Run(); err != nil {
return fmt.Errorf("error while bootstraping buildx builder: %s", err)
Expand Down