mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 18:13:42 +08:00 
			
		
		
		
	bake: fix incorrect dockerfile resolution against cwd:// context
We need to resolve the strip the cwd:// prefix before attempting to resolve the dockerfile. Otherwise, we'll get the cwd:// prefix in the dockerfile name, which isn't stripped out later. Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
		@@ -1048,12 +1048,12 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
 | 
			
		||||
		bi.DockerfileInline = *t.DockerfileInline
 | 
			
		||||
	}
 | 
			
		||||
	updateContext(&bi, inp)
 | 
			
		||||
	if !build.IsRemoteURL(bi.ContextPath) && bi.ContextState == nil && !path.IsAbs(bi.DockerfilePath) {
 | 
			
		||||
		bi.DockerfilePath = path.Join(bi.ContextPath, bi.DockerfilePath)
 | 
			
		||||
	}
 | 
			
		||||
	if strings.HasPrefix(bi.ContextPath, "cwd://") {
 | 
			
		||||
		bi.ContextPath = path.Clean(strings.TrimPrefix(bi.ContextPath, "cwd://"))
 | 
			
		||||
	}
 | 
			
		||||
	if !build.IsRemoteURL(bi.ContextPath) && bi.ContextState == nil && !path.IsAbs(bi.DockerfilePath) {
 | 
			
		||||
		bi.DockerfilePath = path.Join(bi.ContextPath, bi.DockerfilePath)
 | 
			
		||||
	}
 | 
			
		||||
	for k, v := range bi.NamedContexts {
 | 
			
		||||
		if strings.HasPrefix(v.Path, "cwd://") {
 | 
			
		||||
			bi.NamedContexts[k] = build.NamedContext{Path: path.Clean(strings.TrimPrefix(v.Path, "cwd://"))}
 | 
			
		||||
 
 | 
			
		||||
@@ -386,18 +386,19 @@ func TestHCLCwdPrefix(t *testing.T) {
 | 
			
		||||
	m, g, err := ReadTargets(ctx, []File{fp}, []string{"app"}, nil, nil)
 | 
			
		||||
	require.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
	require.Equal(t, 1, len(m))
 | 
			
		||||
	_, ok := m["app"]
 | 
			
		||||
	require.True(t, ok)
 | 
			
		||||
 | 
			
		||||
	_, err = TargetsToBuildOpt(m, &Input{})
 | 
			
		||||
	bo, err := TargetsToBuildOpt(m, &Input{})
 | 
			
		||||
	require.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
	require.Equal(t, "test", *m["app"].Dockerfile)
 | 
			
		||||
	require.Equal(t, "foo", *m["app"].Context)
 | 
			
		||||
 | 
			
		||||
	require.Equal(t, 1, len(g))
 | 
			
		||||
	require.Equal(t, []string{"app"}, g["default"].Targets)
 | 
			
		||||
 | 
			
		||||
	require.Equal(t, 1, len(m))
 | 
			
		||||
	require.Contains(t, m, "app")
 | 
			
		||||
	require.Equal(t, "test", *m["app"].Dockerfile)
 | 
			
		||||
	require.Equal(t, "foo", *m["app"].Context)
 | 
			
		||||
 | 
			
		||||
	require.Equal(t, "foo/test", bo["app"].Inputs.DockerfilePath)
 | 
			
		||||
	require.Equal(t, "foo", bo["app"].Inputs.ContextPath)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestOverrideMerge(t *testing.T) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user