diff --git a/pkg/skaffold/build/bazel.go b/pkg/skaffold/build/bazel.go index a28fc44302e..b78370b7f9a 100644 --- a/pkg/skaffold/build/bazel.go +++ b/pkg/skaffold/build/bazel.go @@ -20,12 +20,12 @@ import ( "context" "fmt" "io" - "io/ioutil" "os" "os/exec" "path/filepath" "strings" + "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/v1alpha2" "github.com/pkg/errors" ) @@ -43,21 +43,23 @@ func (l *LocalBuilder) buildBazel(ctx context.Context, out io.Writer, a *v1alpha tarPath := strings.TrimPrefix(a.BazelArtifact.BuildTarget, "//:") //TODO(r2d4): strip off trailing .tar, even worse imageTag := strings.TrimSuffix(tarPath, ".tar") + imageTar, err := os.Open(filepath.Join(a.Workspace, "bazel-bin", tarPath)) if err != nil { return "", errors.Wrap(err, "opening image tarball") } defer imageTar.Close() + resp, err := l.api.ImageLoad(ctx, imageTar, false) if err != nil { return "", errors.Wrap(err, "loading image into docker daemon") } defer resp.Body.Close() - respStr, err := ioutil.ReadAll(resp.Body) + + err = docker.StreamDockerMessages(out, resp.Body) if err != nil { return "", errors.Wrap(err, "reading from image load response") } - out.Write(respStr) return fmt.Sprintf("bazel:%s", imageTag), nil } diff --git a/pkg/skaffold/docker/image.go b/pkg/skaffold/docker/image.go index bd1ad5ab00b..09fcf51732b 100644 --- a/pkg/skaffold/docker/image.go +++ b/pkg/skaffold/docker/image.go @@ -78,11 +78,11 @@ func RunBuild(ctx context.Context, cli DockerAPIClient, opts *BuildOptions) erro return errors.Wrap(err, "docker build") } defer resp.Body.Close() - return streamDockerMessages(opts.BuildBuf, resp.Body) + return StreamDockerMessages(opts.BuildBuf, resp.Body) } // TODO(@r2d4): Make this output much better, this is the bare minimum -func streamDockerMessages(dst io.Writer, src io.Reader) error { +func StreamDockerMessages(dst io.Writer, src io.Reader) error { fd, _ := term.GetFdInfo(dst) return jsonmessage.DisplayJSONMessagesStream(src, dst, fd, false, nil) } @@ -99,7 +99,7 @@ func RunPush(ctx context.Context, cli DockerAPIClient, ref string, out io.Writer return errors.Wrap(err, "pushing image to repository") } defer rc.Close() - return streamDockerMessages(out, rc) + return StreamDockerMessages(out, rc) } func AddTag(src, target string) error {