mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 17:37:46 +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) {
|
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 lnames []string // local
|
||||||
var rnames []string
|
var rnames []string // remote
|
||||||
|
var anames []string // both
|
||||||
for _, v := range names {
|
for _, v := range names {
|
||||||
if strings.HasPrefix(v, "cwd://") {
|
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 {
|
} else {
|
||||||
rnames = append(rnames, v)
|
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 != "" {
|
if url != "" {
|
||||||
lfiles, err = bake.ReadLocalFiles(lnames, stdin, sub)
|
lfiles, err = bake.ReadLocalFiles(lnames, stdin, sub)
|
||||||
} else {
|
} else {
|
||||||
lfiles, err = bake.ReadLocalFiles(append(lnames, rnames...), stdin, sub)
|
lfiles, err = bake.ReadLocalFiles(anames, stdin, sub)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -24,6 +24,7 @@ var bakeTests = []func(t *testing.T, sb integration.Sandbox){
|
|||||||
testBakeRemote,
|
testBakeRemote,
|
||||||
testBakeRemoteCmdContext,
|
testBakeRemoteCmdContext,
|
||||||
testBakeRemoteLocalOverride,
|
testBakeRemoteLocalOverride,
|
||||||
|
testBakeLocalCwdOverride,
|
||||||
testBakeRemoteCmdContextOverride,
|
testBakeRemoteCmdContextOverride,
|
||||||
testBakeRemoteContextSubdir,
|
testBakeRemoteContextSubdir,
|
||||||
testBakeRemoteCmdContextEscapeRoot,
|
testBakeRemoteCmdContextEscapeRoot,
|
||||||
@ -173,6 +174,41 @@ EOT
|
|||||||
require.FileExists(t, filepath.Join(dirDest, "bar"))
|
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) {
|
func testBakeRemoteCmdContext(t *testing.T, sb integration.Sandbox) {
|
||||||
bakefile := []byte(`
|
bakefile := []byte(`
|
||||||
target "default" {
|
target "default" {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user