@@ -2,8 +2,11 @@ package docker
22
33import (
44 "archive/tar"
5+ "bytes"
56 "context"
67 "fmt"
8+ "io"
9+ "log"
710 "os/exec"
811 "path"
912
@@ -105,11 +108,31 @@ func BuildReleaseArtifacts(ctx context.Context, opts BuildReleaseArtifactsOpts,
105108func RunCliBuild (contextReader * nio.PipeReader , tarWriter * nio.PipeWriter , args ... string ) error {
106109 finalArgs := append ([]string {"buildx" , "build" }, args ... )
107110 cmd := exec .Command ("docker" , finalArgs ... )
111+
108112 cmd .Stdout = tarWriter
109113 cmd .Stdin = contextReader
110114
111- if err := cmd .Run (); err != nil {
112- return fmt .Errorf ("failed to execute docker build: %w" , err )
115+ stderrPipe , err := cmd .StderrPipe ()
116+ if err != nil {
117+ return fmt .Errorf ("failed to create stderr pipe: %w" , err )
118+ }
119+
120+ if err := cmd .Start (); err != nil {
121+ return fmt .Errorf ("error starting docker build: %w" , err )
122+ }
123+
124+ var stderr bytes.Buffer
125+ go func () {
126+ if _ , err := io .Copy (& stderr , stderrPipe ); err != nil {
127+ log .Printf ("error writing stderr buffer: %s" , err .Error ())
128+ }
129+ }()
130+
131+ if err := cmd .Wait (); err != nil {
132+ if stderr .Len () > 0 {
133+ log .Println ("Docker build error output:" , stderr .String ())
134+ }
135+ return fmt .Errorf ("failed to execute docker build: %w: %s" , err , stderr .String ())
113136 }
114137
115138 return nil
0 commit comments