From 9c998a934fd364df1eadb868448a0ed0d74f8267 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Mon, 28 Apr 2025 08:30:22 +0200 Subject: [PATCH] fix collect image digests for service images built by bake Signed-off-by: Nicolas De Loof --- pkg/compose/build_bake.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/pkg/compose/build_bake.go b/pkg/compose/build_bake.go index ac474bc77..589ed5405 100644 --- a/pkg/compose/build_bake.go +++ b/pkg/compose/build_bake.go @@ -124,6 +124,7 @@ type bakeMetadata map[string]buildStatus type buildStatus struct { Digest string `json:"containerimage.digest"` + Image string `json:"image.name"` } 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 Groups: map[string]bakeGroup{}, Targets: map[string]bakeTarget{}, } - var group bakeGroup - var privileged bool - var read []string + var ( + group bakeGroup + privileged bool + read []string + expectedImages = make(map[string]string, len(serviceToBeBuild)) // service name -> expected image + ) for serviceName, service := range serviceToBeBuild { if service.Build == nil { @@ -161,6 +165,7 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project } image := api.GetImageNameOrDefault(service, project.Name) + expectedImages[serviceName] = image entitlements := build.Entitlements if slices.Contains(build.Entitlements, "security.insecure") { @@ -324,8 +329,12 @@ func (s *composeService) doBuildBake(ctx context.Context, project *types.Project cw := progress.ContextWriter(ctx) results := map[string]string{} - for name, m := range md { - results[name] = m.Digest + for service, name := range expectedImages { + built, ok := md[service] // bake target == service name + if !ok { + return nil, fmt.Errorf("build result not found in Bake metadata for service %s", service) + } + results[name] = built.Digest cw.Event(progress.BuiltEvent(name)) } return results, nil