@@ -3,14 +3,15 @@ package integration
3
3
import (
4
4
"bytes"
5
5
"context"
6
- "fmt "
6
+ "encoding/json "
7
7
"io"
8
8
"net"
9
9
"os"
10
10
"path/filepath"
11
11
"time"
12
12
13
13
"github.com/docker/docker/client"
14
+ "github.com/moby/buildkit/cmd/buildkitd/config"
14
15
"github.com/moby/buildkit/util/testutil/dockerd"
15
16
"github.com/pkg/errors"
16
17
"golang.org/x/sync/errgroup"
@@ -63,6 +64,37 @@ func (c moby) New(ctx context.Context, cfg *BackendConfig) (b Backend, cl func()
63
64
return nil , nil , err
64
65
}
65
66
67
+ bkcfg , err := config .LoadFile (cfg .ConfigFile )
68
+ if err != nil {
69
+ return nil , nil , errors .Wrapf (err , "failed to load buildkit config file %s" , cfg .ConfigFile )
70
+ }
71
+
72
+ dcfg := dockerd.Config {
73
+ Features : map [string ]bool {
74
+ "containerd-snapshotter" : c .name == "dockerd-containerd" ,
75
+ },
76
+ }
77
+ if reg , ok := bkcfg .Registries ["docker.io" ]; ok && len (reg .Mirrors ) > 0 {
78
+ for _ , m := range reg .Mirrors {
79
+ dcfg .Mirrors = append (dcfg .Mirrors , "http://" + m )
80
+ }
81
+ }
82
+ if bkcfg .Entitlements != nil {
83
+ for _ , e := range bkcfg .Entitlements {
84
+ switch e {
85
+ case "network.host" :
86
+ dcfg .Builder .Entitlements .NetworkHost = true
87
+ case "security.insecure" :
88
+ dcfg .Builder .Entitlements .SecurityInsecure = true
89
+ }
90
+ }
91
+ }
92
+
93
+ dcfgdt , err := json .Marshal (dcfg )
94
+ if err != nil {
95
+ return nil , nil , errors .Wrapf (err , "failed to marshal dockerd config" )
96
+ }
97
+
66
98
deferF := & multiCloser {}
67
99
cl = deferF .F ()
68
100
@@ -86,14 +118,8 @@ func (c moby) New(ctx context.Context, cfg *BackendConfig) (b Backend, cl func()
86
118
return nil , nil , errors .Errorf ("new daemon error: %q, %s" , err , formatLogs (cfg .Logs ))
87
119
}
88
120
89
- dockerdConfig := fmt .Sprintf (`{
90
- "features": {
91
- "containerd-snapshotter": %v
92
- }
93
- }` , c .name == "dockerd-containerd" )
94
-
95
121
dockerdConfigFile := filepath .Join (workDir , "daemon.json" )
96
- if err := os .WriteFile (dockerdConfigFile , [] byte ( dockerdConfig ) , 0644 ); err != nil {
122
+ if err := os .WriteFile (dockerdConfigFile , dcfgdt , 0644 ); err != nil {
97
123
return nil , nil , err
98
124
}
99
125
0 commit comments