From 7c41244e1504f7b20d76bf1248bd78519b1cc15c Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 3 Oct 2019 14:50:53 -0700 Subject: [PATCH 1/3] use a unique temp dir for each build to prevent concurrent builds from stomping on each other --- builder/docker/step_temp_dir.go | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/builder/docker/step_temp_dir.go b/builder/docker/step_temp_dir.go index c9578076e..72236dd96 100644 --- a/builder/docker/step_temp_dir.go +++ b/builder/docker/step_temp_dir.go @@ -3,6 +3,7 @@ package docker import ( "context" "fmt" + "io/ioutil" "log" "os" "path/filepath" @@ -34,16 +35,7 @@ func ConfigTmpDir() (string, error) { configdir = fp } - td := filepath.Join(configdir, "tmp") - _, err = os.Stat(td) - if os.IsNotExist(err) { - log.Printf("Creating tempdir in %s", td) - if err = os.MkdirAll(td, 0755); err != nil { - return "", err - } - } else if err != nil { - return "", err - } + td, err := ioutil.TempDir(configdir, "tmp") log.Printf("Set Packer temp dir to %s", td) return td, nil } From 7f040dfed8d6c597c14f6f81e78db0646a58e126 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 3 Oct 2019 15:06:01 -0700 Subject: [PATCH 2/3] update tests --- builder/docker/step_temp_dir.go | 4 ++++ builder/docker/step_temp_dir_test.go | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/builder/docker/step_temp_dir.go b/builder/docker/step_temp_dir.go index 72236dd96..d9c0ed6c7 100644 --- a/builder/docker/step_temp_dir.go +++ b/builder/docker/step_temp_dir.go @@ -36,6 +36,10 @@ func ConfigTmpDir() (string, error) { } td, err := ioutil.TempDir(configdir, "tmp") + if err != nil { + return "", fmt.Errorf("Error creating temp dir: %s", err) + + } log.Printf("Set Packer temp dir to %s", td) return td, nil } diff --git a/builder/docker/step_temp_dir_test.go b/builder/docker/step_temp_dir_test.go index a573726ec..ee7245150 100644 --- a/builder/docker/step_temp_dir_test.go +++ b/builder/docker/step_temp_dir_test.go @@ -35,7 +35,7 @@ func testStepTempDir_impl(t *testing.T) string { dir := dirRaw.(string) if _, err := os.Stat(dir); err != nil { - t.Fatalf("err: %s", err) + t.Fatalf("Stat for %s failed: err: %s", err, dir) } // Cleanup From de8e8557ae059b444f2dad53ac6a62c61376a78b Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 3 Oct 2019 15:16:27 -0700 Subject: [PATCH 3/3] make config dir if it doens't exist. --- builder/docker/step_temp_dir.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/builder/docker/step_temp_dir.go b/builder/docker/step_temp_dir.go index d9c0ed6c7..39808cdd2 100644 --- a/builder/docker/step_temp_dir.go +++ b/builder/docker/step_temp_dir.go @@ -35,6 +35,16 @@ func ConfigTmpDir() (string, error) { configdir = fp } + _, err = os.Stat(configdir) + if os.IsNotExist(err) { + log.Printf("Config dir %s does not exist; creating...", configdir) + if err = os.MkdirAll(configdir, 0755); err != nil { + return "", err + } + } else if err != nil { + return "", err + } + td, err := ioutil.TempDir(configdir, "tmp") if err != nil { return "", fmt.Errorf("Error creating temp dir: %s", err)