From f54a67de6d08f334cea8dd118663e2a96ea96b13 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Tue, 5 Sep 2023 22:04:46 -0700 Subject: [PATCH] enable trace delegation for docker/remote driver Signed-off-by: Tonis Tiigi --- driver/docker/driver.go | 22 +++++++++++++++++----- driver/remote/driver.go | 9 +++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/driver/docker/driver.go b/driver/docker/driver.go index 64c0dd25..e31175c3 100644 --- a/driver/docker/driver.go +++ b/driver/docker/driver.go @@ -8,6 +8,7 @@ import ( "github.com/docker/buildx/driver" "github.com/docker/buildx/util/progress" "github.com/moby/buildkit/client" + "github.com/moby/buildkit/util/tracing/detect" "github.com/pkg/errors" ) @@ -51,11 +52,22 @@ func (d *Driver) Rm(ctx context.Context, force, rmVolume, rmDaemon bool) error { } func (d *Driver) Client(ctx context.Context) (*client.Client, error) { - return client.New(ctx, "", client.WithContextDialer(func(context.Context, string) (net.Conn, error) { - return d.DockerAPI.DialHijack(ctx, "/grpc", "h2c", nil) - }), client.WithSessionDialer(func(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) { - return d.DockerAPI.DialHijack(ctx, "/session", proto, meta) - })) + opts := []client.ClientOpt{ + client.WithContextDialer(func(context.Context, string) (net.Conn, error) { + return d.DockerAPI.DialHijack(ctx, "/grpc", "h2c", nil) + }), client.WithSessionDialer(func(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) { + return d.DockerAPI.DialHijack(ctx, "/session", proto, meta) + }), + } + + exp, err := detect.Exporter() + if err != nil { + return nil, err + } + if td, ok := exp.(client.TracerDelegate); ok { + opts = append(opts, client.WithTracerDelegate(td)) + } + return client.New(ctx, "", opts...) } func (d *Driver) Features(ctx context.Context) map[driver.Feature]bool { diff --git a/driver/remote/driver.go b/driver/remote/driver.go index 27ffd169..aa481cbe 100644 --- a/driver/remote/driver.go +++ b/driver/remote/driver.go @@ -7,6 +7,7 @@ import ( "github.com/docker/buildx/driver" "github.com/docker/buildx/util/progress" "github.com/moby/buildkit/client" + "github.com/moby/buildkit/util/tracing/detect" "google.golang.org/grpc" "google.golang.org/grpc/backoff" ) @@ -72,6 +73,14 @@ func (d *Driver) Client(ctx context.Context) (*client.Client, error) { grpc.WithConnectParams(grpc.ConnectParams{Backoff: backoffConfig}), )) + exp, err := detect.Exporter() + if err != nil { + return nil, err + } + if td, ok := exp.(client.TracerDelegate); ok { + opts = append(opts, client.WithTracerDelegate(td)) + } + if d.tlsOpts != nil { opts = append(opts, []client.ClientOpt{ client.WithServerConfig(d.tlsOpts.serverName, d.tlsOpts.caCert),