Skip to content

Commit a0fb323

Browse files
committed
fix actionable error for buildx cross-compile
1 parent c703038 commit a0fb323

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pkg/skaffold/build/docker/docker.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,12 @@ func (b *Builder) dockerCLIBuild(ctx context.Context, out io.Writer, name string
190190
cmd.Stderr = stderr
191191

192192
if err := util.RunCmd(ctx, cmd); err != nil {
193-
return "", tryExecFormatErr(fmt.Errorf("running build: %w", err), errBuffer)
193+
if !b.buildx {
194+
err = tryExecFormatErr(fmt.Errorf("running build: %w", err), errBuffer)
195+
} else {
196+
err = tryExecFormatErrBuildX(fmt.Errorf("running build: %w", err), errBuffer)
197+
}
198+
return "", err
194199
}
195200

196201
if !b.buildx {

pkg/skaffold/build/docker/errors.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,3 +170,20 @@ func tryExecFormatErr(err error, stdErr bytes.Buffer) error {
170170
},
171171
})
172172
}
173+
174+
func tryExecFormatErrBuildX(err error, stdErr bytes.Buffer) error {
175+
if !execFormatErr.MatchString(stdErr.String()) {
176+
return err
177+
}
178+
return sErrors.NewError(err,
179+
&proto.ActionableErr{
180+
Message: err.Error(),
181+
ErrCode: proto.StatusCode_BUILD_CROSS_PLATFORM_ERR,
182+
Suggestions: []*proto.Suggestion{
183+
{
184+
SuggestionCode: proto.SuggestionCode_BUILD_INSTALL_PLATFORM_EMULATORS,
185+
Action: "To run cross-platform builds, use a proper buildx builder. To create and select it, run:\n\n\tdocker buildx create --driver docker-container --name buildkit\n\n\tskaffold config set buildx-builder buildkit\n\nFor more details, see https://docs.docker.com/build/building/multi-platform/",
186+
},
187+
},
188+
})
189+
}

0 commit comments

Comments
 (0)