mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-31 08:03:43 +08:00 
			
		
		
		
	commands: provide more helpful error when —build-context is not supported
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
		| @@ -27,11 +27,13 @@ import ( | ||||
| 	"github.com/moby/buildkit/session/auth/authprovider" | ||||
| 	"github.com/moby/buildkit/solver/errdefs" | ||||
| 	"github.com/moby/buildkit/util/appcontext" | ||||
| 	"github.com/moby/buildkit/util/grpcerrors" | ||||
| 	"github.com/morikuni/aec" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"github.com/sirupsen/logrus" | ||||
| 	"github.com/spf13/cobra" | ||||
| 	"github.com/spf13/pflag" | ||||
| 	"google.golang.org/grpc/codes" | ||||
| ) | ||||
|  | ||||
| const defaultTargetName = "default" | ||||
| @@ -217,6 +219,7 @@ func runBuild(dockerCli command.Cli, in buildOptions) (err error) { | ||||
| 	} | ||||
|  | ||||
| 	imageID, err := buildTargets(ctx, dockerCli, map[string]build.Options{defaultTargetName: opts}, in.progress, contextPathHash, in.builder, in.metadataFile) | ||||
| 	err = wrapBuildError(err) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| @@ -492,3 +495,29 @@ func parseContextNames(values []string) (map[string]string, error) { | ||||
| 	} | ||||
| 	return result, nil | ||||
| } | ||||
|  | ||||
| func wrapBuildError(err error) error { | ||||
| 	if err == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 	st, ok := grpcerrors.AsGRPCStatus(err) | ||||
| 	if ok { | ||||
| 		if st.Code() == codes.Unimplemented && strings.Contains(st.Message(), "unsupported frontend capability moby.buildkit.frontend.contexts") { | ||||
| 			return &wrapped{err, "current frontend does not support --build-context. Named contexts are supported since Dockerfile v1.4"} | ||||
| 		} | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| type wrapped struct { | ||||
| 	err error | ||||
| 	msg string | ||||
| } | ||||
|  | ||||
| func (w *wrapped) Error() string { | ||||
| 	return w.msg | ||||
| } | ||||
|  | ||||
| func (w *wrapped) Unwrap() error { | ||||
| 	return w.err | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tonis Tiigi
					Tonis Tiigi