Skip to content

Commit 9c998a9

Browse files
ndeloofglours
authored andcommitted
fix collect image digests for service images built by bake
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 0403f0d commit 9c998a9

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

pkg/compose/build_bake.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ type bakeMetadata map[string]buildStatus
124124

125125
type buildStatus struct {
126126
Digest string `json:"containerimage.digest"`
127+
Image string `json:"image.name"`
127128
}
128129

129130
func (s *composeService) doBuildBake(ctx context.Context, project *types.Project, serviceToBeBuild types.Services, options api.BuildOptions) (map[string]string, error) { //nolint:gocyclo
@@ -142,9 +143,12 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
142143
Groups: map[string]bakeGroup{},
143144
Targets: map[string]bakeTarget{},
144145
}
145-
var group bakeGroup
146-
var privileged bool
147-
var read []string
146+
var (
147+
group bakeGroup
148+
privileged bool
149+
read []string
150+
expectedImages = make(map[string]string, len(serviceToBeBuild)) // service name -> expected image
151+
)
148152

149153
for serviceName, service := range serviceToBeBuild {
150154
if service.Build == nil {
@@ -161,6 +165,7 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
161165
}
162166

163167
image := api.GetImageNameOrDefault(service, project.Name)
168+
expectedImages[serviceName] = image
164169

165170
entitlements := build.Entitlements
166171
if slices.Contains(build.Entitlements, "security.insecure") {
@@ -324,8 +329,12 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project
324329

325330
cw := progress.ContextWriter(ctx)
326331
results := map[string]string{}
327-
for name, m := range md {
328-
results[name] = m.Digest
332+
for service, name := range expectedImages {
333+
built, ok := md[service] // bake target == service name
334+
if !ok {
335+
return nil, fmt.Errorf("build result not found in Bake metadata for service %s", service)
336+
}
337+
results[name] = built.Digest
329338
cw.Event(progress.BuiltEvent(name))
330339
}
331340
return results, nil

0 commit comments

Comments
 (0)