mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	Merge pull request #2579 from crazy-max/fix-compose-project-name
bake: use compose project name from env if set
This commit is contained in:
		@@ -8,6 +8,7 @@ import (
 | 
				
			|||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/compose-spec/compose-go/v2/consts"
 | 
				
			||||||
	"github.com/compose-spec/compose-go/v2/dotenv"
 | 
						"github.com/compose-spec/compose-go/v2/dotenv"
 | 
				
			||||||
	"github.com/compose-spec/compose-go/v2/loader"
 | 
						"github.com/compose-spec/compose-go/v2/loader"
 | 
				
			||||||
	composetypes "github.com/compose-spec/compose-go/v2/types"
 | 
						composetypes "github.com/compose-spec/compose-go/v2/types"
 | 
				
			||||||
@@ -40,7 +41,11 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf
 | 
				
			|||||||
		ConfigFiles: cfgs,
 | 
							ConfigFiles: cfgs,
 | 
				
			||||||
		Environment: envs,
 | 
							Environment: envs,
 | 
				
			||||||
	}, func(options *loader.Options) {
 | 
						}, func(options *loader.Options) {
 | 
				
			||||||
		options.SetProjectName("bake", false)
 | 
							projectName := "bake"
 | 
				
			||||||
 | 
							if v, ok := envs[consts.ComposeProjectName]; ok && v != "" {
 | 
				
			||||||
 | 
								projectName = v
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							options.SetProjectName(projectName, false)
 | 
				
			||||||
		options.SkipNormalization = true
 | 
							options.SkipNormalization = true
 | 
				
			||||||
		options.Profiles = []string{"*"}
 | 
							options.Profiles = []string{"*"}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -771,6 +771,33 @@ services:
 | 
				
			|||||||
	require.NoError(t, err)
 | 
						require.NoError(t, err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestProjectName(t *testing.T) {
 | 
				
			||||||
 | 
						var dt = []byte(`
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  scratch:
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					     context: ./webapp
 | 
				
			||||||
 | 
					     args:
 | 
				
			||||||
 | 
					       PROJECT_NAME: ${COMPOSE_PROJECT_NAME}
 | 
				
			||||||
 | 
					`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						t.Run("default", func(t *testing.T) {
 | 
				
			||||||
 | 
							c, err := ParseCompose([]composetypes.ConfigFile{{Content: dt}}, nil)
 | 
				
			||||||
 | 
							require.NoError(t, err)
 | 
				
			||||||
 | 
							require.Len(t, c.Targets, 1)
 | 
				
			||||||
 | 
							require.Len(t, c.Targets[0].Args, 1)
 | 
				
			||||||
 | 
							require.Equal(t, map[string]*string{"PROJECT_NAME": ptrstr("bake")}, c.Targets[0].Args)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						t.Run("env", func(t *testing.T) {
 | 
				
			||||||
 | 
							c, err := ParseCompose([]composetypes.ConfigFile{{Content: dt}}, map[string]string{"COMPOSE_PROJECT_NAME": "foo"})
 | 
				
			||||||
 | 
							require.NoError(t, err)
 | 
				
			||||||
 | 
							require.Len(t, c.Targets, 1)
 | 
				
			||||||
 | 
							require.Len(t, c.Targets[0].Args, 1)
 | 
				
			||||||
 | 
							require.Equal(t, map[string]*string{"PROJECT_NAME": ptrstr("foo")}, c.Targets[0].Args)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// chdir changes the current working directory to the named directory,
 | 
					// chdir changes the current working directory to the named directory,
 | 
				
			||||||
// and then restore the original working directory at the end of the test.
 | 
					// and then restore the original working directory at the end of the test.
 | 
				
			||||||
func chdir(t *testing.T, dir string) {
 | 
					func chdir(t *testing.T, dir string) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user