Skip to content

Commit 2250d79

Browse files
committed
Improve docker load output in bazel build
Fixes #416 Currently we add the streaming of son messages. It would be even better to stream them with the `isTerminal` flag set but it seems to fail on some setup. Signed-off-by: David Gageot <[email protected]>
1 parent 2d08841 commit 2250d79

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

pkg/skaffold/build/bazel.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ import (
2020
"context"
2121
"fmt"
2222
"io"
23-
"io/ioutil"
2423
"os"
2524
"os/exec"
2625
"path/filepath"
2726
"strings"
2827

28+
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker"
2929
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/v1alpha2"
3030
"github.com/pkg/errors"
3131
)
@@ -43,21 +43,23 @@ func (l *LocalBuilder) buildBazel(ctx context.Context, out io.Writer, a *v1alpha
4343
tarPath := strings.TrimPrefix(a.BazelArtifact.BuildTarget, "//:")
4444
//TODO(r2d4): strip off trailing .tar, even worse
4545
imageTag := strings.TrimSuffix(tarPath, ".tar")
46+
4647
imageTar, err := os.Open(filepath.Join(a.Workspace, "bazel-bin", tarPath))
4748
if err != nil {
4849
return "", errors.Wrap(err, "opening image tarball")
4950
}
5051
defer imageTar.Close()
52+
5153
resp, err := l.api.ImageLoad(ctx, imageTar, false)
5254
if err != nil {
5355
return "", errors.Wrap(err, "loading image into docker daemon")
5456
}
5557
defer resp.Body.Close()
56-
respStr, err := ioutil.ReadAll(resp.Body)
58+
59+
err = docker.StreamDockerMessages(out, resp.Body)
5760
if err != nil {
5861
return "", errors.Wrap(err, "reading from image load response")
5962
}
60-
out.Write(respStr)
6163

6264
return fmt.Sprintf("bazel:%s", imageTag), nil
6365
}

pkg/skaffold/docker/image.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ func RunBuild(ctx context.Context, cli DockerAPIClient, opts *BuildOptions) erro
7878
return errors.Wrap(err, "docker build")
7979
}
8080
defer resp.Body.Close()
81-
return streamDockerMessages(opts.BuildBuf, resp.Body)
81+
return StreamDockerMessages(opts.BuildBuf, resp.Body)
8282
}
8383

8484
// TODO(@r2d4): Make this output much better, this is the bare minimum
85-
func streamDockerMessages(dst io.Writer, src io.Reader) error {
85+
func StreamDockerMessages(dst io.Writer, src io.Reader) error {
8686
fd, _ := term.GetFdInfo(dst)
8787
return jsonmessage.DisplayJSONMessagesStream(src, dst, fd, false, nil)
8888
}
@@ -99,7 +99,7 @@ func RunPush(ctx context.Context, cli DockerAPIClient, ref string, out io.Writer
9999
return errors.Wrap(err, "pushing image to repository")
100100
}
101101
defer rc.Close()
102-
return streamDockerMessages(out, rc)
102+
return StreamDockerMessages(out, rc)
103103
}
104104

105105
func AddTag(src, target string) error {

0 commit comments

Comments
 (0)