Skip to content

Commit 6c4b041

Browse files
committed
chore(server): expand artifact build log with stderr
Signed-off-by: Evgeniy Frolov <evgeniy.frolov@flant.com>
1 parent 47700e3 commit 6c4b041

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

server/pkg/docker/build.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package docker
22

33
import (
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,
105108
func 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

Comments
 (0)