mirror of https://github.com/docker/buildx.git
build: read body response to check for erroneous image export to docker
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
parent
a8f402e28d
commit
ef4b984df4
|
@ -46,17 +46,24 @@ func (c *Client) LoadImage(ctx context.Context, name string, status progress.Wri
|
|||
w = &waitingWriter{
|
||||
PipeWriter: pw,
|
||||
f: func() {
|
||||
resp, err := dapi.ImageLoad(ctx, pr, false)
|
||||
defer close(done)
|
||||
if err != nil {
|
||||
handleErr := func(err error) {
|
||||
pr.CloseWithError(err)
|
||||
w.mu.Lock()
|
||||
w.err = err
|
||||
w.mu.Unlock()
|
||||
}
|
||||
|
||||
resp, err := dapi.ImageLoad(ctx, pr, false)
|
||||
defer close(done)
|
||||
if err != nil {
|
||||
handleErr(err)
|
||||
return
|
||||
}
|
||||
|
||||
prog := progress.WithPrefix(status, "", false)
|
||||
progress.FromReader(prog, "importing to docker", resp.Body)
|
||||
if err := fromReader(prog, "importing to docker", resp.Body); err != nil {
|
||||
handleErr(err)
|
||||
}
|
||||
},
|
||||
done: done,
|
||||
cancel: cancel,
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
package progress
|
||||
package dockerutil
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"time"
|
||||
|
||||
"github.com/docker/buildx/util/progress"
|
||||
"github.com/docker/cli/cli/streams"
|
||||
"github.com/docker/docker/pkg/jsonmessage"
|
||||
"github.com/moby/buildkit/client"
|
||||
"github.com/moby/buildkit/identity"
|
||||
"github.com/opencontainers/go-digest"
|
||||
)
|
||||
|
||||
func FromReader(w Writer, name string, rc io.ReadCloser) {
|
||||
func fromReader(w progress.Writer, name string, rc io.ReadCloser) error {
|
||||
dgst := digest.FromBytes([]byte(identity.NewID()))
|
||||
tm := time.Now()
|
||||
|
||||
|
@ -23,7 +27,12 @@ func FromReader(w Writer, name string, rc io.ReadCloser) {
|
|||
Vertexes: []*client.Vertex{&vtx},
|
||||
})
|
||||
|
||||
_, err := io.Copy(io.Discard, rc)
|
||||
err := jsonmessage.DisplayJSONMessagesToStream(rc, streams.NewOut(io.Discard), nil)
|
||||
if err != nil {
|
||||
if jerr, ok := err.(*jsonmessage.JSONError); ok {
|
||||
err = errors.New(jerr.Message)
|
||||
}
|
||||
}
|
||||
|
||||
tm2 := time.Now()
|
||||
vtx2 := vtx
|
||||
|
@ -34,4 +43,5 @@ func FromReader(w Writer, name string, rc io.ReadCloser) {
|
|||
w.Write(&client.SolveStatus{
|
||||
Vertexes: []*client.Vertex{&vtx2},
|
||||
})
|
||||
return err
|
||||
}
|
Loading…
Reference in New Issue