diff --git a/pkg/commands/run.go b/pkg/commands/run.go index f09c9c79f1..e0dd1beefd 100644 --- a/pkg/commands/run.go +++ b/pkg/commands/run.go @@ -65,7 +65,8 @@ func (r *RunCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bui logrus.Infof("args: %s", newCommand[1:]) cmd := exec.Command(newCommand[0], newCommand[1:]...) - cmd.Dir = config.WorkingDir + + cmd.Dir = setWorkDirIfExists(config.WorkingDir) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr replacementEnvs := buildArgs.ReplacementEnvs(config.Env) @@ -236,3 +237,10 @@ func (cr *CachingRunCommand) String() string { func (cr *CachingRunCommand) MetadataOnly() bool { return false } + +func setWorkDirIfExists(workdir string) string { + if _, err := os.Lstat(workdir); err == nil { + return workdir + } + return "" +} diff --git a/pkg/commands/run_test.go b/pkg/commands/run_test.go index 5a7139a6bb..81d213b042 100644 --- a/pkg/commands/run_test.go +++ b/pkg/commands/run_test.go @@ -316,3 +316,12 @@ func Test_CachingRunCommand_ExecuteCommand(t *testing.T) { }) } } + +func TestSetWorkDirIfExists(t *testing.T) { + testDir, err := ioutil.TempDir("", "workdir") + if err != nil { + t.Error(err) + } + testutil.CheckDeepEqual(t, testDir, setWorkDirIfExists(testDir)) + testutil.CheckDeepEqual(t, "", setWorkDirIfExists("doesnot-exists")) +}