@@ -26,6 +26,7 @@ import (
2626 "github.com/docker/buildx/builder"
2727 "github.com/docker/buildx/driver"
2828 "github.com/docker/buildx/localstate"
29+ "github.com/docker/buildx/util/desktop"
2930 "github.com/docker/buildx/util/dockerutil"
3031 "github.com/docker/buildx/util/imagetools"
3132 "github.com/docker/buildx/util/progress"
@@ -719,7 +720,6 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
719720 }()
720721
721722 eg , ctx := errgroup .WithContext (ctx )
722-
723723 for k , opt := range opt {
724724 multiDriver := len (m [k ]) > 1
725725 hasMobyDriver := false
@@ -799,6 +799,9 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
799799 var respMu sync.Mutex
800800 results := waitmap .New ()
801801
802+ buildDetailsOpts := make (map [string ]desktop.BuildDetailsOpt )
803+ defer func () { logrus .Printf (desktop .BuildDetailsOutput (buildDetailsOpts )) }()
804+
802805 multiTarget := len (opt ) > 1
803806
804807 for k , opt := range opt {
@@ -822,6 +825,7 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
822825
823826 for i , dp := range dps {
824827 i , dp , so := i , dp , * dp .so
828+ node := nodes [dp .driverIndex ]
825829 if multiDriver {
826830 for i , e := range so .Exports {
827831 switch e .Type {
@@ -929,6 +933,13 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
929933 printRes = res .Metadata
930934 }
931935 results .Set (resultKey (dp .driverIndex , k ), res )
936+ if node .Driver .Features ()[driver .HistoryAPI ] && desktop .BuildBackendEnabled () {
937+ buildDetailsOpts [k ] = desktop.BuildDetailsOpt {
938+ Builder : node .Builder ,
939+ Node : node .Name ,
940+ Ref : so .Ref ,
941+ }
942+ }
932943 if resultHandleFunc != nil {
933944 resultCtx , err := NewResultContext (ctx , cc , so , res )
934945 if err == nil {
0 commit comments