Skip to content

Commit 4893a8b

Browse files
ndeloofglours
authored andcommitted
don't create metadatafile, just generate a random name
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
1 parent 9753079 commit 4893a8b

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

pkg/compose/build_bake.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"encoding/json"
2424
"errors"
2525
"fmt"
26+
"math/rand"
2627
"os"
2728
"os/exec"
2829
"path/filepath"
@@ -249,20 +250,22 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
249250
}
250251
logrus.Debugf("bake build config:\n%s", string(b))
251252

252-
metadata, err := os.CreateTemp(os.TempDir(), "compose")
253-
if err != nil {
254-
return nil, err
253+
var metadataFile string
254+
for {
255+
// we don't use os.CreateTemp here as we need a temporary file name, but don't want it actually created
256+
// as bake relies on atomicwriter and this creates conflict during rename
257+
metadataFile = filepath.Join(os.TempDir(), fmt.Sprintf("compose-build-metadataFile-%d.json", rand.Int31()))
258+
if _, err = os.Stat(metadataFile); os.IsNotExist(err) {
259+
break
260+
}
255261
}
256-
defer func() {
257-
_ = os.Remove(metadata.Name())
258-
}()
259262

260263
buildx, err := manager.GetPlugin("buildx", s.dockerCli, &cobra.Command{})
261264
if err != nil {
262265
return nil, err
263266
}
264267

265-
args := []string{"bake", "--file", "-", "--progress", "rawjson", "--metadata-file", metadata.Name()}
268+
args := []string{"bake", "--file", "-", "--progress", "rawjson", "--metadata-file", metadataFile}
266269
mustAllow := buildx.Version != "" && versions.GreaterThanOrEqualTo(buildx.Version[1:], "0.17.0")
267270
if mustAllow {
268271
// FIXME we should prompt user about this, but this is a breaking change in UX
@@ -343,7 +346,7 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
343346
return nil, fmt.Errorf("failed to execute bake: %w", err)
344347
}
345348

346-
b, err = os.ReadFile(metadata.Name())
349+
b, err = os.ReadFile(metadataFile)
347350
if err != nil {
348351
return nil, err
349352
}

0 commit comments

Comments
 (0)