diff --git a/pkg/stacker/build.go b/pkg/stacker/build.go index 8d5ce707..b76fd470 100644 --- a/pkg/stacker/build.go +++ b/pkg/stacker/build.go @@ -522,7 +522,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) } diff --git a/test/convert.bats b/test/convert.bats index f173b8a6..0dd17aec 100644 --- a/test/convert.bats +++ b/test/convert.bats @@ -72,7 +72,7 @@ EOF @test "elasticsearch" { skip_slow_test - git clone https://github.com/elastic/dockerfiles.git + git clone -b v9.2.4 https://github.com/elastic/dockerfiles.git chmod -R a+rwx dockerfiles cd dockerfiles/elasticsearch stacker convert --docker-file Dockerfile --output-file stacker.yaml --substitute-file stacker-subs.yaml