mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 00:47:48 +08:00
bake: fix definitions merge order
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
parent
89684021b3
commit
052f279de7
@ -292,13 +292,17 @@ func saveLocalStateGroup(dockerCli command.Cli, ref string, lsg localstate.State
|
||||
}
|
||||
|
||||
func readBakeFiles(ctx context.Context, nodes []builder.Node, url string, names []string, stdin io.Reader, pw progress.Writer) (files []bake.File, inp *bake.Input, err error) {
|
||||
var lnames []string
|
||||
var rnames []string
|
||||
var lnames []string // local
|
||||
var rnames []string // remote
|
||||
var anames []string // both
|
||||
for _, v := range names {
|
||||
if strings.HasPrefix(v, "cwd://") {
|
||||
lnames = append(lnames, strings.TrimPrefix(v, "cwd://"))
|
||||
tname := strings.TrimPrefix(v, "cwd://")
|
||||
lnames = append(lnames, tname)
|
||||
anames = append(anames, tname)
|
||||
} else {
|
||||
rnames = append(rnames, v)
|
||||
anames = append(anames, v)
|
||||
}
|
||||
}
|
||||
|
||||
@ -317,7 +321,7 @@ func readBakeFiles(ctx context.Context, nodes []builder.Node, url string, names
|
||||
if url != "" {
|
||||
lfiles, err = bake.ReadLocalFiles(lnames, stdin, sub)
|
||||
} else {
|
||||
lfiles, err = bake.ReadLocalFiles(append(lnames, rnames...), stdin, sub)
|
||||
lfiles, err = bake.ReadLocalFiles(anames, stdin, sub)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
@ -24,6 +24,7 @@ var bakeTests = []func(t *testing.T, sb integration.Sandbox){
|
||||
testBakeRemote,
|
||||
testBakeRemoteCmdContext,
|
||||
testBakeRemoteLocalOverride,
|
||||
testBakeLocalCwdOverride,
|
||||
testBakeRemoteCmdContextOverride,
|
||||
testBakeRemoteContextSubdir,
|
||||
testBakeRemoteCmdContextEscapeRoot,
|
||||
@ -173,6 +174,41 @@ EOT
|
||||
require.FileExists(t, filepath.Join(dirDest, "bar"))
|
||||
}
|
||||
|
||||
func testBakeLocalCwdOverride(t *testing.T, sb integration.Sandbox) {
|
||||
bakeFile := []byte(`
|
||||
target "default" {
|
||||
dockerfile-inline = <<EOT
|
||||
FROM scratch
|
||||
COPY foo /foo
|
||||
EOT
|
||||
}
|
||||
`)
|
||||
cwdBakefile := []byte(`
|
||||
target "default" {
|
||||
dockerfile-inline = <<EOT
|
||||
FROM scratch
|
||||
COPY bar /bar
|
||||
EOT
|
||||
}
|
||||
`)
|
||||
|
||||
dir := tmpdir(
|
||||
t,
|
||||
fstest.CreateFile("docker-bake.hcl", bakeFile, 0600),
|
||||
fstest.CreateFile("docker-bake-cwd.hcl", cwdBakefile, 0600),
|
||||
fstest.CreateFile("bar", []byte("bar"), 0600),
|
||||
)
|
||||
dirDest := t.TempDir()
|
||||
|
||||
cmd := buildxCmd(sb, withDir(dir), withArgs("bake", "--file", "docker-bake.hcl", "--file", "cwd://docker-bake-cwd.hcl", "--progress=plain", "--set", "*.output=type=local,dest="+dirDest))
|
||||
dt, err := cmd.CombinedOutput()
|
||||
require.NoError(t, err, string(dt))
|
||||
require.Contains(t, string(dt), `#1 [internal] load local bake definitions`)
|
||||
require.Contains(t, string(dt), `#1 reading docker-bake.hcl`)
|
||||
require.Contains(t, string(dt), `#1 reading docker-bake-cwd.hcl`)
|
||||
require.FileExists(t, filepath.Join(dirDest, "bar"))
|
||||
}
|
||||
|
||||
func testBakeRemoteCmdContext(t *testing.T, sb integration.Sandbox) {
|
||||
bakefile := []byte(`
|
||||
target "default" {
|
||||
|
Loading…
x
Reference in New Issue
Block a user