Skip to content

Commit 0c17d46

Browse files
[feat]: [CI-15951]: Allow to configure buildkit version, timeouts (#55)
* [feat]: [CI-15951]: Allow to configure buildkit version, tlshandshaketimeout, responseheaderstimeout * Update buildx.go * Update app.go * Update version.json
1 parent d69e125 commit 0c17d46

File tree

5 files changed

+56
-23
lines changed

5 files changed

+56
-23
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ coverage.out
33
vendor
44
.vscode/
55
Dockerfile
6-
buildkit/*.tar
6+
buildkit/*.tar
7+
.idea

app.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,16 @@ func Run() {
385385
Usage: "Buildkit version to use",
386386
EnvVar: "PLUGIN_BUILDKIT_VERSION",
387387
},
388+
cli.StringFlag{
389+
Name: "buildkit-tls-handshake-timeout",
390+
Usage: "Buildkit TLS handshake timeout override. Default value is 10s",
391+
EnvVar: "PLUGIN_BUILDKIT_TLS_HANDSHAKE_TIMEOUT",
392+
},
393+
cli.StringFlag{
394+
Name: "buildkit-response-header-timeout",
395+
Usage: "Buildkit response header timeout override. Default value is 30s",
396+
EnvVar: "PLUGIN_BUILDKIT_RESPONSE_HEADER_TIMEOUT",
397+
},
388398
}
389399

390400
if err := app.Run(os.Args); err != nil {
@@ -461,15 +471,17 @@ func run(c *cli.Context) error {
461471
ArtifactRegistry: c.String("artifact.registry"),
462472
},
463473
Builder: Builder{
464-
Name: c.String("builder-name"),
465-
DaemonConfig: c.String("builder-daemon-config"),
466-
Driver: c.String("builder-driver"),
467-
DriverOpts: c.Generic("builder-driver-opts").(*CustomStringSliceFlag).GetValue(),
468-
DriverOptsNew: c.Generic("builder-driver-opts-new").(*CustomStringSliceFlag).GetValue(),
469-
RemoteConn: c.String("builder-remote-conn"),
470-
UseLoadedBuildkit: c.BoolT("use-loaded-buildkit"),
471-
AssestsDir: c.String("buildkit-assets-dir"),
472-
BuildkitVersion: c.String("buildkit-version"),
474+
Name: c.String("builder-name"),
475+
DaemonConfig: c.String("builder-daemon-config"),
476+
Driver: c.String("builder-driver"),
477+
DriverOpts: c.Generic("builder-driver-opts").(*CustomStringSliceFlag).GetValue(),
478+
DriverOptsNew: c.Generic("builder-driver-opts-new").(*CustomStringSliceFlag).GetValue(),
479+
RemoteConn: c.String("builder-remote-conn"),
480+
UseLoadedBuildkit: c.BoolT("use-loaded-buildkit"),
481+
AssestsDir: c.String("buildkit-assets-dir"),
482+
BuildkitVersion: c.String("buildkit-version"),
483+
BuildkitTLSHandshakeTimeout: c.String("buildkit-tls-handshake-timeout"),
484+
BuildkitResponseHeaderTimeout: c.String("buildkit-response-header-timeout"),
473485
},
474486
BaseImageRegistry: c.String("docker.baseimageregistry"),
475487
BaseImageUsername: c.String("docker.baseimageusername"),

buildkit/version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"buildkit_version": "harness/buildkit:1.0.6"
2+
"buildkit_version": "harness/buildkit:1.0.7"
33
}

buildx.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package docker
22

33
import (
4+
"fmt"
45
"os/exec"
6+
"strings"
57
)
68

79
const (
@@ -24,6 +26,17 @@ func cmdSetupBuildx(builder Builder, driverOpts []string) *exec.Cmd {
2426
if builder.RemoteConn != "" && builder.Driver == remoteDriver {
2527
args = append(args, builder.RemoteConn)
2628
}
29+
// Collect buildkitd flags
30+
var buildkitdFlags []string
31+
if builder.BuildkitTLSHandshakeTimeout != "" {
32+
buildkitdFlags = append(buildkitdFlags, fmt.Sprintf("--tls-handshake-timeout=%s", builder.BuildkitTLSHandshakeTimeout))
33+
}
34+
if builder.BuildkitResponseHeaderTimeout != "" {
35+
buildkitdFlags = append(buildkitdFlags, fmt.Sprintf("--response-header-timeout=%s", builder.BuildkitResponseHeaderTimeout))
36+
}
37+
if len(buildkitdFlags) > 0 {
38+
args = append(args, "--buildkitd-flags", strings.Join(buildkitdFlags, " "))
39+
}
2740
return exec.Command(dockerExe, args...)
2841
}
2942

docker.go

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,17 @@ type (
3535
}
3636

3737
Builder struct {
38-
Name string // Buildx builder name
39-
DaemonConfig string // Buildx daemon config file path
40-
Driver string // Buildx driver type
41-
DriverOpts []string // Buildx driver opts
42-
DriverOptsNew []string // Buildx driver opts new
43-
RemoteConn string // Buildx remote connection endpoint
44-
UseLoadedBuildkit bool // Use loaded buildkit or no
45-
AssestsDir string // Assets directory
46-
BuildkitVersion string // Buildkit version
38+
Name string // Buildx builder name
39+
DaemonConfig string // Buildx daemon config file path
40+
Driver string // Buildx driver type
41+
DriverOpts []string // Buildx driver opts
42+
DriverOptsNew []string // Buildx driver opts new
43+
RemoteConn string // Buildx remote connection endpoint
44+
UseLoadedBuildkit bool // Use loaded buildkit or no
45+
AssestsDir string // Assets directory
46+
BuildkitVersion string // Buildkit version
47+
BuildkitTLSHandshakeTimeout string // Buildkit TLS handshake timeout
48+
BuildkitResponseHeaderTimeout string // Buildkit response header timeout
4749
}
4850

4951
// Login defines Docker login parameters.
@@ -288,6 +290,10 @@ func (p Plugin) Exec() error {
288290

289291
shouldFallback := true
290292
if len(p.Builder.DriverOptsNew) != 0 {
293+
if p.Builder.BuildkitVersion != "" {
294+
fmt.Printf("Using BuildKit Version with new driver opts: %s\n", p.Builder.BuildkitVersion)
295+
updateImageVersion(&p.Builder.DriverOptsNew, p.Builder.BuildkitVersion)
296+
}
291297
createCmd := cmdSetupBuildx(p.Builder, p.Builder.DriverOptsNew)
292298
raw, err = createCmd.Output()
293299
if err != nil {
@@ -302,6 +308,7 @@ func (p Plugin) Exec() error {
302308
fmt.Printf("Error while inspecting buildx builder with new driver opts: %s\n", err)
303309
// Mark that the fallback will be used
304310
shouldFallback = true
311+
p.Builder.Name = ""
305312
} else {
306313
shouldFallback = false
307314
}
@@ -311,10 +318,10 @@ func (p Plugin) Exec() error {
311318
// Main code block
312319
if (p.Builder.UseLoadedBuildkit && loadedBuildkitTarball && loadedBuildkitVersion) || p.Builder.BuildkitVersion != "" {
313320
var version string
314-
if p.Builder.UseLoadedBuildkit && loadedBuildkitTarball && loadedBuildkitVersion {
315-
version = config.BuildkitVersion
316-
} else {
321+
if p.Builder.BuildkitVersion != "" {
317322
version = p.Builder.BuildkitVersion
323+
} else if p.Builder.UseLoadedBuildkit && loadedBuildkitTarball && loadedBuildkitVersion {
324+
version = config.BuildkitVersion
318325
}
319326
fmt.Printf("Using BuildKit Version: %s\n", version)
320327
updateImageVersion(&p.Builder.DriverOpts, version)

0 commit comments

Comments
 (0)