@@ -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"
@@ -718,8 +719,8 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
718719 }
719720 }()
720721
722+ buildDetailsOpts := make (map [string ]desktop.BuildDetailsOpt )
721723 eg , ctx := errgroup .WithContext (ctx )
722-
723724 for k , opt := range opt {
724725 multiDriver := len (m [k ]) > 1
725726 hasMobyDriver := false
@@ -736,6 +737,13 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
736737 so , release , err := toSolveOpt (ctx , node , multiDriver , opt , np .bopts , configDir , w , func (name string ) (io.WriteCloser , func (), error ) {
737738 return docker .LoadImage (ctx , name , w )
738739 })
740+ if node .Driver .Features ()[driver .HistoryAPI ] && desktop .BuildBackendEnabled () {
741+ buildDetailsOpts [k ] = desktop.BuildDetailsOpt {
742+ Builder : node .Builder ,
743+ Node : node .Name ,
744+ Ref : so .Ref ,
745+ }
746+ }
739747 if err != nil {
740748 return nil , err
741749 }
@@ -769,6 +777,9 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
769777 }
770778 }
771779
780+ // print build details links
781+ logrus .Printf (desktop .BuildDetailsOutput (buildDetailsOpts ))
782+
772783 // validate that all links between targets use same drivers
773784 for name := range opt {
774785 dps := m [name ]
0 commit comments