MCPcopy
hub / github.com/docker/compose / doBuildBake

Method doBuildBake

pkg/compose/build_bake.go:118–418  ·  view source on GitHub ↗
(ctx context.Context, project *types.Project, serviceToBeBuild types.Services, options api.BuildOptions)

Source from the content-addressed store, hash-verified

116}
117
118func (s *composeService) doBuildBake(ctx context.Context, project *types.Project, serviceToBeBuild types.Services, options api.BuildOptions) (map[string]string, error) { //nolint:gocyclo
119 eg := errgroup.Group{}
120 ch := make(chan *client.SolveStatus)
121 displayMode := progressui.DisplayMode(options.Progress)
122 if p, ok := os.LookupEnv("BUILDKIT_PROGRESS"); ok && displayMode == progressui.AutoMode {
123 displayMode = progressui.DisplayMode(p)
124 }
125 out := options.Out
126 if out == nil {
127 out = s.stdout()
128 }
129 display, err := progressui.NewDisplay(makeConsole(out), displayMode)
130 if err != nil {
131 return nil, err
132 }
133 eg.Go(func() error {
134 _, err := display.UpdateFrom(ctx, ch)
135 return err
136 })
137
138 cfg := bakeConfig{
139 Groups: map[string]bakeGroup{},
140 Targets: map[string]bakeTarget{},
141 }
142 var (
143 group bakeGroup
144 privileged bool
145 read []string
146 expectedImages = make(map[string]string, len(serviceToBeBuild)) // service name -> expected image
147 targets = make(map[string]string, len(serviceToBeBuild)) // service name -> build target
148 )
149
150 // produce a unique ID for service used as bake target
151 for serviceName := range project.Services {
152 t := strings.ReplaceAll(serviceName, ".", "_")
153 for {
154 if _, ok := targets[serviceName]; !ok {
155 targets[serviceName] = t
156 break
157 }
158 t += "_"
159 }
160 }
161
162 var secretsEnv []string
163 for serviceName, service := range project.Services {
164 if service.Build == nil {
165 continue
166 }
167 buildConfig := *service.Build
168 labels := getImageBuildLabels(project, service)
169
170 args := resolveAndMergeBuildArgs(s.getProxyConfig(), project, service, options).ToMapping()
171 for k, v := range args {
172 args[k] = strings.ReplaceAll(v, "${", "$${")
173 }
174
175 entitlements := buildConfig.Entitlements

Callers 1

buildMethod · 0.95

Calls 15

stdoutMethod · 0.95
getProxyConfigMethod · 0.95
getBuildxPluginMethod · 0.95
dryRunBakeMethod · 0.95
prepareShellOutMethod · 0.95
GetImageNameOrDefaultFunction · 0.92
makeConsoleFunction · 0.85
getImageBuildLabelsFunction · 0.85
resolveAndMergeBuildArgsFunction · 0.85
buildingEventFunction · 0.85
toBakeSecretsFunction · 0.85

Tested by

no test coverage detected