Skip to content
This repository was archived by the owner on Aug 29, 2023. It is now read-only.

Commit 904641b

Browse files
authored
feat: add option to specify buildkit config file path (#32)
1 parent 380e304 commit 904641b

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

cmd/drone-docker-buildx/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ func settingsFlags(settings *plugin.Settings) []cli.Flag {
9393
EnvVars: []string{"PLUGIN_DAEMON_OFF"},
9494
Destination: &settings.Daemon.Disabled,
9595
},
96+
&cli.StringFlag{
97+
Name: "daemon.buildkit-config",
98+
Usage: "location of buildkit config file",
99+
EnvVars: []string{"PLUGIN_BUILDKIT_CONFIG"},
100+
Destination: &settings.Daemon.BuildkitConfig,
101+
},
96102
&cli.StringFlag{
97103
Name: "dockerfile",
98104
Usage: "build dockerfile",

plugin/docker.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,18 @@ func commandInfo() *exec.Cmd {
5252
return exec.Command(dockerExe, "info")
5353
}
5454

55-
func commandBuilder() *exec.Cmd {
56-
return exec.Command(dockerExe, "buildx", "create", "--use")
55+
func commandBuilder(daemon Daemon) *exec.Cmd {
56+
args := []string{
57+
"buildx",
58+
"create",
59+
"--use",
60+
}
61+
62+
if daemon.BuildkitConfig != "" {
63+
args = append(args, "--config", daemon.BuildkitConfig)
64+
}
65+
66+
return exec.Command(dockerExe, args...)
5767
}
5868

5969
func commandBuildx() *exec.Cmd {

plugin/impl.go

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,20 @@ import (
1414

1515
// Daemon defines Docker daemon parameters.
1616
type Daemon struct {
17-
Registry string // Docker registry
18-
Mirror string // Docker registry mirror
19-
Insecure bool // Docker daemon enable insecure registries
20-
StorageDriver string // Docker daemon storage driver
21-
StoragePath string // Docker daemon storage path
22-
Disabled bool // DOcker daemon is disabled (already running)
23-
Debug bool // Docker daemon started in debug mode
24-
Bip string // Docker daemon network bridge IP address
25-
DNS cli.StringSlice // Docker daemon dns server
26-
DNSSearch cli.StringSlice // Docker daemon dns search domain
27-
MTU string // Docker daemon mtu setting
28-
IPv6 bool // Docker daemon IPv6 networking
29-
Experimental bool // Docker daemon enable experimental mode
17+
Registry string // Docker registry
18+
Mirror string // Docker registry mirror
19+
Insecure bool // Docker daemon enable insecure registries
20+
StorageDriver string // Docker daemon storage driver
21+
StoragePath string // Docker daemon storage path
22+
Disabled bool // DOcker daemon is disabled (already running)
23+
Debug bool // Docker daemon started in debug mode
24+
Bip string // Docker daemon network bridge IP address
25+
DNS cli.StringSlice // Docker daemon dns server
26+
DNSSearch cli.StringSlice // Docker daemon dns search domain
27+
MTU string // Docker daemon mtu setting
28+
IPv6 bool // Docker daemon IPv6 networking
29+
Experimental bool // Docker daemon enable experimental mode
30+
BuildkitConfig string // Docker buildkit config file
3031
}
3132

3233
// Login defines Docker login parameters.
@@ -77,6 +78,12 @@ func (p *Plugin) Validate() error {
7778
p.settings.Build.Ref = p.pipeline.Commit.Ref
7879
p.settings.Daemon.Registry = p.settings.Login.Registry
7980

81+
if p.settings.Daemon.BuildkitConfig != "" {
82+
if _, err := os.Stat(p.settings.Daemon.BuildkitConfig); err != nil && os.IsNotExist(err) {
83+
return fmt.Errorf("given buildkit config file not found")
84+
}
85+
}
86+
8087
if p.settings.Build.TagsAuto {
8188
// return true if tag event or default branch
8289
if UseDefaultTag(
@@ -159,7 +166,7 @@ func (p *Plugin) Execute() error {
159166
var cmds []*exec.Cmd
160167
cmds = append(cmds, commandVersion()) // docker version
161168
cmds = append(cmds, commandInfo()) // docker info
162-
cmds = append(cmds, commandBuilder())
169+
cmds = append(cmds, commandBuilder(p.settings.Daemon))
163170
cmds = append(cmds, commandBuildx())
164171

165172
// pre-pull cache images

0 commit comments

Comments
 (0)