Skip to content

Commit a966d04

Browse files
committed
feat: set mirrors from concourse request
1 parent d81cf8f commit a966d04

File tree

6 files changed

+33
-32
lines changed

6 files changed

+33
-32
lines changed

buildkitd.go

+27-5
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ import (
1919
type Buildkitd struct {
2020
Addr string
2121

22+
config *BuildkitdConfig
2223
rootDir string
2324
opts *BuildkitdOpts
2425
proc *os.Process
2526
}
2627

2728
// BuildkitdOpts to provide to Buildkitd
2829
type BuildkitdOpts struct {
29-
Config *BuildkitdConfig
3030
ConfigPath string
3131
}
3232

33-
func SpawnBuildkitd(opts *BuildkitdOpts) (*Buildkitd, error) {
33+
func SpawnBuildkitd(req Request, opts *BuildkitdOpts) (*Buildkitd, error) {
3434
buildkitd := Buildkitd{}
3535
if opts != nil {
3636
buildkitd.opts = opts
@@ -41,6 +41,8 @@ func SpawnBuildkitd(opts *BuildkitdOpts) (*Buildkitd, error) {
4141
return nil, errors.Wrap(err, "setup cgroups")
4242
}
4343

44+
buildkitd.setConfigFromRequest(req)
45+
4446
err = buildkitd.generateConfig()
4547
if err != nil {
4648
return nil, errors.Wrap(err, "generate config")
@@ -136,12 +138,32 @@ func (buildkitd *Buildkitd) Cleanup() error {
136138
return nil
137139
}
138140

141+
func (buildkitd *Buildkitd) setConfigFromRequest(req Request) {
142+
var config BuildkitdConfig
143+
var configSet bool
144+
145+
if len(req.Config.Mirrors) > 0 {
146+
var registryConfigs map[string]RegistryConfig
147+
registryConfigs = make(map[string]RegistryConfig)
148+
registryConfigs["docker.io"] = RegistryConfig{
149+
Mirrors: req.Config.Mirrors,
150+
}
151+
152+
config.Registries = registryConfigs
153+
configSet = true
154+
}
155+
156+
if configSet {
157+
buildkitd.config = &config
158+
}
159+
}
160+
139161
func (buildkitd Buildkitd) generateConfig() error {
140-
if buildkitd.opts == nil || buildkitd.opts.Config == nil {
162+
if buildkitd.config == nil {
141163
return nil
142164
}
143165

144-
if buildkitd.opts.ConfigPath == "" {
166+
if buildkitd.opts == nil || buildkitd.opts.ConfigPath == "" {
145167
buildkitd.opts.ConfigPath = "/etc/buildkit/buildkitd.toml"
146168
}
147169

@@ -158,7 +180,7 @@ func (buildkitd Buildkitd) generateConfig() error {
158180
return err
159181
}
160182

161-
err = toml.NewEncoder(f).Encode(buildkitd.opts.Config)
183+
err = toml.NewEncoder(f).Encode(buildkitd.config)
162184
if err != nil {
163185
return err
164186
}

buildkitd_test.go

+2-18
Original file line numberDiff line numberDiff line change
@@ -55,25 +55,9 @@ func (s *BuildkitdSuite) TestNoConfig() {
5555
func (s *BuildkitdSuite) TestGenerateConfig() {
5656
var err error
5757

58-
var registryConfigs map[string]task.RegistryConfig
59-
registryConfigs = make(map[string]task.RegistryConfig)
60-
registryConfigs["docker.io"] = task.RegistryConfig{
61-
Mirrors: []string{"hub.docker.io"},
62-
PlainHTTP: &[]bool{true}[0],
63-
Insecure: &[]bool{true}[0],
64-
RootCAs: []string{"/etc/config/myca.pem"},
65-
KeyPairs: []task.TLSKeyPair{
66-
{
67-
Key: "/etc/config/key.pem",
68-
Certificate: "/etc/config/cert.pem",
69-
},
70-
},
71-
}
58+
s.req.Config.Mirrors = []string{"hub.docker.io"}
7259

73-
s.buildkitd, err = task.SpawnBuildkitd(&task.BuildkitdOpts{
74-
Config: &task.BuildkitdConfig{
75-
Registries: registryConfigs,
76-
},
60+
s.buildkitd, err = task.SpawnBuildkitd(s.req, &task.BuildkitdOpts{
7761
ConfigPath: s.configPath("mirrors.toml"),
7862
})
7963
s.NoError(err)

cmd/task/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func main() {
2929
}
3030
}
3131

32-
buildkitd, err := task.SpawnBuildkitd(nil)
32+
buildkitd, err := task.SpawnBuildkitd(req, nil)
3333
failIf("start buildkitd", err)
3434

3535
res, err := task.Build(buildkitd, wd, req)

task_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type TaskSuite struct {
2424

2525
func (s *TaskSuite) SetupSuite() {
2626
var err error
27-
s.buildkitd, err = task.SpawnBuildkitd(nil)
27+
s.buildkitd, err = task.SpawnBuildkitd(s.req, nil)
2828
s.NoError(err)
2929
}
3030

-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
11
[registry]
22
[registry."docker.io"]
33
mirrors = ["hub.docker.io"]
4-
http = true
5-
insecure = true
6-
ca = ["/etc/config/myca.pem"]
7-
8-
[[registry."docker.io".keypair]]
9-
key = "/etc/config/key.pem"
10-
cert = "/etc/config/cert.pem"

types.go

+2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ type Config struct {
5555
BuildArgs []string `json:"build_args" envconfig:"optional"`
5656
BuildArgsFile string `json:"build_args_file" envconfig:"optional"`
5757

58+
Mirrors []string `json:"mirrors" envconfig:"optional"`
59+
5860
// Unpack the OCI image into Concourse's rootfs/ + metadata.json image scheme.
5961
//
6062
// Theoretically this would go away if/when we standardize on OCI.

0 commit comments

Comments
 (0)