Skip to content

Commit 66ecda5

Browse files
authored
Merge pull request #37 from drone-plugins/CI-13880
feat: [CI-13880]: Enable new driver opts
2 parents 387a8e4 + d3c499d commit 66ecda5

File tree

3 files changed

+38
-14
lines changed

3 files changed

+38
-14
lines changed

app.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,12 @@ func Run() {
314314
EnvVar: "PLUGIN_BUILDER_DRIVER_OPTS",
315315
Value: new(CustomStringSliceFlag),
316316
},
317+
cli.GenericFlag{
318+
Name: "builder-driver-opts-new",
319+
Usage: "buildx builder driver opts new",
320+
EnvVar: "PLUGIN_BUILDER_DRIVER_OPTS_NEW",
321+
Value: new(CustomStringSliceFlag),
322+
},
317323
cli.StringFlag{
318324
Name: "builder-remote-conn",
319325
EnvVar: "PLUGIN_BUILDER_REMOTE_CONN",
@@ -421,10 +427,11 @@ func run(c *cli.Context) error {
421427
ArtifactRegistry: c.String("artifact.registry"),
422428
},
423429
Builder: Builder{
424-
Name: c.String("builder-name"),
425-
Driver: c.String("builder-driver"),
426-
DriverOpts: c.Generic("builder-driver-opts").(*CustomStringSliceFlag).GetValue(),
427-
RemoteConn: c.String("builder-remote-conn"),
430+
Name: c.String("builder-name"),
431+
Driver: c.String("builder-driver"),
432+
DriverOpts: c.Generic("builder-driver-opts").(*CustomStringSliceFlag).GetValue(),
433+
DriverOptsNew: c.Generic("builder-driver-opts-new").(*CustomStringSliceFlag).GetValue(),
434+
RemoteConn: c.String("builder-remote-conn"),
428435
},
429436
BaseImageRegistry: c.String("docker.baseimageregistry"),
430437
BaseImageUsername: c.String("docker.baseimageusername"),

buildx.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ const (
1010
remoteDriver = "remote"
1111
)
1212

13-
func cmdSetupBuildx(builder Builder) *exec.Cmd {
13+
func cmdSetupBuildx(builder Builder, driverOpts []string) *exec.Cmd {
1414
args := []string{"buildx", "create", "--use", "--driver", builder.Driver}
1515
if builder.Name != "" {
1616
args = append(args, "--name", builder.Name)
1717
}
18-
for _, opt := range builder.DriverOpts {
18+
for _, opt := range driverOpts {
1919
args = append(args, "--driver-opt", opt)
2020
}
2121
if builder.RemoteConn != "" && builder.Driver == remoteDriver {

docker.go

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ type (
3434
}
3535

3636
Builder struct {
37-
Name string // Buildx builder name
38-
Driver string // Buildx driver type
39-
DriverOpts []string // Buildx driver opts
40-
RemoteConn string // Buildx remote connection endpoint
37+
Name string // Buildx builder name
38+
Driver string // Buildx driver type
39+
DriverOpts []string // Buildx driver opts
40+
DriverOptsNew []string // Buildx driver opts new
41+
RemoteConn string // Buildx remote connection endpoint
4142
}
4243

4344
// Login defines Docker login parameters.
@@ -230,10 +231,26 @@ func (p Plugin) Exec() error {
230231
}
231232

232233
if p.Builder.Driver != "" && p.Builder.Driver != defaultDriver {
233-
createCmd := cmdSetupBuildx(p.Builder)
234-
raw, err := createCmd.Output()
235-
if err != nil {
236-
return fmt.Errorf("error while creating buildx builder: %s and err: %s", string(raw), err)
234+
var (
235+
raw []byte
236+
err error
237+
)
238+
shouldFallback := true
239+
if len(p.Builder.DriverOptsNew) != 0 {
240+
createCmd := cmdSetupBuildx(p.Builder, p.Builder.DriverOptsNew)
241+
raw, err = createCmd.Output()
242+
if err == nil {
243+
shouldFallback = false
244+
} else {
245+
fmt.Printf("Unable to setup buildx with new driver opts: %s\n", err)
246+
}
247+
}
248+
if shouldFallback {
249+
createCmd := cmdSetupBuildx(p.Builder, p.Builder.DriverOpts)
250+
raw, err = createCmd.Output()
251+
if err != nil {
252+
return fmt.Errorf("error while creating buildx builder: %s and err: %s", string(raw), err)
253+
}
237254
}
238255
p.Builder.Name = strings.TrimSuffix(string(raw), "\n")
239256

0 commit comments

Comments
 (0)