cleanup buildkit errors everywhere

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
Andrea Luzzardi 2021-01-20 18:05:40 -08:00
parent 1d64422320
commit 0381c58d80
3 changed files with 31 additions and 22 deletions

View File

@ -203,8 +203,7 @@ func (c *Client) buildfn(ctx context.Context, ch chan *bk.SolveStatus, w io.Writ
// Call buildkit solver // Call buildkit solver
resp, err := c.c.Build(ctx, opts, "", Compute, ch) resp, err := c.c.Build(ctx, opts, "", Compute, ch)
if err != nil { if err != nil {
err = errors.New(bkCleanError(err.Error())) return errors.Wrap(bkCleanError(err), "buildkit solve")
return errors.Wrap(err, "buildkit solve")
} }
for k, v := range resp.ExporterResponse { for k, v := range resp.ExporterResponse {
// FIXME consume exporter response // FIXME consume exporter response
@ -306,7 +305,7 @@ func (n Node) LogError(ctx context.Context, errmsg string) {
Ctx(ctx). Ctx(ctx).
Error(). Error().
Str("path", n.ComponentPath().String()). Str("path", n.ComponentPath().String()).
Msg(bkCleanError(errmsg)) Msg(errmsg)
} }
func (c *Client) printfn(ctx context.Context, ch chan *bk.SolveStatus) error { func (c *Client) printfn(ctx context.Context, ch chan *bk.SolveStatus) error {
@ -363,21 +362,6 @@ func (c *Client) printfn(ctx context.Context, ch chan *bk.SolveStatus) error {
} }
} }
// A helper to remove noise from buildkit error messages.
// FIXME: Obviously a cleaner solution would be nice.
func bkCleanError(msg string) string {
noise := []string{
"executor failed running ",
"buildkit-runc did not terminate successfully",
"rpc error: code = Unknown desc =",
"failed to solve: ",
}
for _, s := range noise {
msg = strings.Replace(msg, s, "", -1)
}
return msg
}
func (c *Client) dockerprintfn(ctx context.Context, ch chan *bk.SolveStatus, out io.Writer) error { func (c *Client) dockerprintfn(ctx context.Context, ch chan *bk.SolveStatus, out io.Writer) error {
var cons console.Console var cons console.Console
// FIXME: use smarter writer from blr // FIXME: use smarter writer from blr

View File

@ -4,9 +4,11 @@ import (
"context" "context"
"os" "os"
"path" "path"
"strings"
"github.com/moby/buildkit/client/llb" "github.com/moby/buildkit/client/llb"
bkgw "github.com/moby/buildkit/frontend/gateway/client" bkgw "github.com/moby/buildkit/frontend/gateway/client"
"github.com/pkg/errors"
fstypes "github.com/tonistiigi/fsutil/types" fstypes "github.com/tonistiigi/fsutil/types"
) )
@ -37,7 +39,7 @@ func (fs *FS) solve(ctx context.Context) error {
} }
output, err := fs.s.Solve(ctx, fs.input) output, err := fs.s.Solve(ctx, fs.input)
if err != nil { if err != nil {
return err return bkCleanError(err)
} }
fs.output = output fs.output = output
return nil return nil
@ -54,7 +56,11 @@ func (fs FS) ReadFile(ctx context.Context, filename string) ([]byte, error) {
return nil, os.ErrNotExist return nil, os.ErrNotExist
} }
return fs.output.ReadFile(ctx, bkgw.ReadRequest{Filename: filename}) contents, err := fs.output.ReadFile(ctx, bkgw.ReadRequest{Filename: filename})
if err != nil {
return nil, bkCleanError(err)
}
return contents, nil
} }
func (fs FS) ReadDir(ctx context.Context, dir string) ([]Stat, error) { func (fs FS) ReadDir(ctx context.Context, dir string) ([]Stat, error) {
@ -72,7 +78,7 @@ func (fs FS) ReadDir(ctx context.Context, dir string) ([]Stat, error) {
Path: dir, Path: dir,
}) })
if err != nil { if err != nil {
return nil, err return nil, bkCleanError(err)
} }
out := make([]Stat, len(st)) out := make([]Stat, len(st))
for i := range st { for i := range st {
@ -150,3 +156,22 @@ func (fs FS) Result(ctx context.Context) (*bkgw.Result, error) {
res.SetRef(ref) res.SetRef(ref)
return res, nil return res, nil
} }
// A helper to remove noise from buildkit error messages.
// FIXME: Obviously a cleaner solution would be nice.
func bkCleanError(err error) error {
noise := []string{
"executor failed running ",
"buildkit-runc did not terminate successfully",
"rpc error: code = Unknown desc =",
"failed to solve: ",
}
msg := err.Error()
for _, s := range noise {
msg = strings.Replace(msg, s, "", -1)
}
return errors.New(msg)
}

View File

@ -47,7 +47,7 @@ func (s Solver) Solve(ctx context.Context, st llb.State) (bkgw.Reference, error)
Evaluate: true, Evaluate: true,
}) })
if err != nil { if err != nil {
return nil, err return nil, bkCleanError(err)
} }
// always use single reference (ignore multiple outputs & metadata) // always use single reference (ignore multiple outputs & metadata)
return res.SingleRef() return res.SingleRef()