mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-01 00:23:56 +08:00 
			
		
		
		
	Merge pull request #2237 from crazy-max/fix-bake-read-order
bake: fix definitions merge order
This commit is contained in:
		| @@ -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" { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 CrazyMax
					CrazyMax