From 78a3e64e4fb4b65788259fe5c4436e55abec13e0 Mon Sep 17 00:00:00 2001 From: Dimitris Sotirakis Date: Wed, 19 Oct 2022 13:58:22 +0300 Subject: [PATCH] CI: Add `CreateTempDir` func and use it in publish packages logic (#57171) * Add CreateTempDir func and use it in publish packages logic * Fill err return in defer func (cherry picked from commit e829b5014911363be862306b34a41fb0eeb13362) --- pkg/build/cmd/publishpackages.go | 2 +- .../{createtempfile.go => createtemp.go} | 17 ++++++++++++++++ ...atetempfile_test.go => createtemp_test.go} | 20 +++++++++++++++++++ pkg/build/packaging/deb.go | 2 +- pkg/build/packaging/rpm.go | 2 +- 5 files changed, 40 insertions(+), 3 deletions(-) rename pkg/build/fsutil/{createtempfile.go => createtemp.go} (55%) rename pkg/build/fsutil/{createtempfile_test.go => createtemp_test.go} (52%) diff --git a/pkg/build/cmd/publishpackages.go b/pkg/build/cmd/publishpackages.go index 3971c65a497..a44e30503aa 100644 --- a/pkg/build/cmd/publishpackages.go +++ b/pkg/build/cmd/publishpackages.go @@ -69,7 +69,7 @@ func PublishPackages(c *cli.Context) error { // In test release mode, the operator should configure different GCS buckets for the package repos, // so should be safe. if cfg.ReleaseMode.Mode == config.TagMode { - workDir, err := fsutil.CreateTempFile("") + workDir, err := fsutil.CreateTempDir("") if err != nil { return err } diff --git a/pkg/build/fsutil/createtempfile.go b/pkg/build/fsutil/createtemp.go similarity index 55% rename from pkg/build/fsutil/createtempfile.go rename to pkg/build/fsutil/createtemp.go index e75dd11677d..21720a9a3d8 100644 --- a/pkg/build/fsutil/createtempfile.go +++ b/pkg/build/fsutil/createtemp.go @@ -24,3 +24,20 @@ func CreateTempFile(sfx string) (string, error) { return f.Name(), nil } + +// CreateTempDir generates a temp directory, based on the provided suffix. +// A typical generated path looks like /var/folders/abcd/abcdefg/A/1137975807/. +func CreateTempDir(sfx string) (string, error) { + var suffix string + if sfx != "" { + suffix = fmt.Sprintf("*-%s", sfx) + } else { + suffix = sfx + } + dir, err := os.MkdirTemp("", suffix) + if err != nil { + return "", err + } + + return dir, nil +} diff --git a/pkg/build/fsutil/createtempfile_test.go b/pkg/build/fsutil/createtemp_test.go similarity index 52% rename from pkg/build/fsutil/createtempfile_test.go rename to pkg/build/fsutil/createtemp_test.go index 53da94f7481..640585f4ea5 100644 --- a/pkg/build/fsutil/createtempfile_test.go +++ b/pkg/build/fsutil/createtemp_test.go @@ -26,3 +26,23 @@ func TestCreateTempFile(t *testing.T) { require.Len(t, strings.Split(pathParts[len(pathParts)-1], "-"), 2) }) } + +func TestCreateTempDir(t *testing.T) { + t.Run("empty suffix, expects pattern like: /var/folders/abcd/abcdefg/A/1137975807/", func(t *testing.T) { + filePath, err := CreateTempFile("") + require.NoError(t, err) + + pathParts := strings.Split(filePath, "/") + require.Greater(t, len(pathParts), 1) + require.Len(t, strings.Split(pathParts[len(pathParts)-1], "-"), 1) + }) + + t.Run("non-empty suffix, expects /var/folders/abcd/abcdefg/A/1137975807-foobar/", func(t *testing.T) { + filePath, err := CreateTempFile("foobar") + require.NoError(t, err) + + pathParts := strings.Split(filePath, "/") + require.Greater(t, len(pathParts), 1) + require.Len(t, strings.Split(pathParts[len(pathParts)-1], "-"), 2) + }) +} diff --git a/pkg/build/packaging/deb.go b/pkg/build/packaging/deb.go index 78158296e91..a5c01bd2ea6 100644 --- a/pkg/build/packaging/deb.go +++ b/pkg/build/packaging/deb.go @@ -122,7 +122,7 @@ func UpdateDebRepo(cfg PublishConfig, workDir string) error { repoName = "beta" } - repoRoot, err := fsutil.CreateTempFile("deb-repo") + repoRoot, err := fsutil.CreateTempDir("deb-repo") if err != nil { return err } diff --git a/pkg/build/packaging/rpm.go b/pkg/build/packaging/rpm.go index a361f28aded..24da71a185a 100644 --- a/pkg/build/packaging/rpm.go +++ b/pkg/build/packaging/rpm.go @@ -32,7 +32,7 @@ func UpdateRPMRepo(cfg PublishConfig, workDir string) error { return err } - repoRoot, err := fsutil.CreateTempFile("rpm-repo") + repoRoot, err := fsutil.CreateTempDir("rpm-repo") if err != nil { return err }