diff --git a/pkg/stacker/build.go b/pkg/stacker/build.go index 177f38ab..d737f7a4 100644 --- a/pkg/stacker/build.go +++ b/pkg/stacker/build.go @@ -527,7 +527,7 @@ func (b *Builder) build(s types.Storage, file string) error { log.Infof("failed executing %s: %s\n", opts.OnRunFailure, err2) } } - return errors.Errorf("run commands failed: %s", err) + return errors.Errorf("run commands failed for image %q in %q: %s", name, sf.FilePath(), err) } } diff --git a/pkg/stacker/convert.go b/pkg/stacker/convert.go index 364bf9c4..7588d5b6 100644 --- a/pkg/stacker/convert.go +++ b/pkg/stacker/convert.go @@ -210,6 +210,7 @@ func (c *Converter) convertCommand(cmd *Command) error { c.env[key] = val } case "workdir": + layer.Run = append(layer.Run, fmt.Sprintf("mkdir -p %s", cmd.Value[0])) layer.Run = append(layer.Run, fmt.Sprintf("cd %s", cmd.Value[0])) c.currDir = cmd.Value[0] case "arg": diff --git a/pkg/types/stackerfile.go b/pkg/types/stackerfile.go index 5ae33287..4ef6e61b 100644 --- a/pkg/types/stackerfile.go +++ b/pkg/types/stackerfile.go @@ -53,6 +53,10 @@ func (sf *Stackerfile) Get(name string) (Layer, bool) { return layer, ok } +func (sf *Stackerfile) FilePath() string { + return sf.path +} + func (sf *Stackerfile) Len() int { return len(sf.internal) }