From c7bf302c23f68298bfccfea1b864053f9d700568 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Wed, 26 Feb 2025 10:53:50 +0100 Subject: [PATCH] wrap builder execution within a project/build span Signed-off-by: Nicolas De Loof --- pkg/compose/build.go | 7 +++++-- pkg/compose/watch.go | 12 +++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pkg/compose/build.go b/pkg/compose/build.go index 39a2aa683..0fcedab60 100644 --- a/pkg/compose/build.go +++ b/pkg/compose/build.go @@ -63,8 +63,11 @@ func (s *composeService) Build(ctx context.Context, project *types.Project, opti return err } return progress.RunWithTitle(ctx, func(ctx context.Context) error { - _, err := s.build(ctx, project, options, nil) - return err + return tracing.SpanWrapFunc("project/build", tracing.ProjectOptions(ctx, project), + func(ctx context.Context) error { + _, err := s.build(ctx, project, options, nil) + return err + })(ctx) }, s.stdinfo(), "Building") } diff --git a/pkg/compose/watch.go b/pkg/compose/watch.go index 31c811e77..cff1d4f0b 100644 --- a/pkg/compose/watch.go +++ b/pkg/compose/watch.go @@ -33,6 +33,7 @@ import ( ccli "github.com/docker/cli/cli/command/container" pathutil "github.com/docker/compose/v2/internal/paths" "github.com/docker/compose/v2/internal/sync" + "github.com/docker/compose/v2/internal/tracing" "github.com/docker/compose/v2/pkg/api" "github.com/docker/compose/v2/pkg/watch" "github.com/docker/docker/api/types/container" @@ -522,7 +523,16 @@ func (s *composeService) rebuild(ctx context.Context, project *types.Project, se options.LogTo.Log(api.WatchLogger, fmt.Sprintf("Rebuilding service(s) %q after changes were detected...", services)) // restrict the build to ONLY this service, not any of its dependencies options.Build.Services = services - imageNameToIdMap, err := s.build(ctx, project, *options.Build, nil) + + var ( + imageNameToIdMap map[string]string + err error + ) + err = tracing.SpanWrapFunc("project/build", tracing.ProjectOptions(ctx, project), + func(ctx context.Context) error { + imageNameToIdMap, err = s.build(ctx, project, *options.Build, nil) + return err + })(ctx) if err != nil { options.LogTo.Log(api.WatchLogger, fmt.Sprintf("Build failed. Error: %v", err)) return err