From 3e8c41beb0ad038b08c533278b8cddb0456ea3f6 Mon Sep 17 00:00:00 2001 From: Tibor Vass Date: Mon, 22 Oct 2018 20:43:36 +0000 Subject: [PATCH] build: update session support detection Avoid testing for session support in non-buildkit builder to support servers that falsely report as `1.39` compatible Signed-off-by: Tibor Vass --- cli/command/image/build.go | 2 +- cli/command/image/build_buildkit.go | 2 +- cli/command/image/build_session.go | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/command/image/build.go b/cli/command/image/build.go index e91bb48c21..5dd7aee6c5 100644 --- a/cli/command/image/build.go +++ b/cli/command/image/build.go @@ -350,7 +350,7 @@ func runBuild(dockerCli command.Cli, options buildOptions) error { buildCtx = dockerfileCtx } - s, err := trySession(dockerCli, contextDir) + s, err := trySession(dockerCli, contextDir, true) if err != nil { return err } diff --git a/cli/command/image/build_buildkit.go b/cli/command/image/build_buildkit.go index 8bb84388c6..cd5591e1aa 100644 --- a/cli/command/image/build_buildkit.go +++ b/cli/command/image/build_buildkit.go @@ -43,7 +43,7 @@ var errDockerfileConflict = errors.New("ambiguous Dockerfile source: both stdin func runBuildBuildKit(dockerCli command.Cli, options buildOptions) error { ctx := appcontext.Context() - s, err := trySession(dockerCli, options.context) + s, err := trySession(dockerCli, options.context, false) if err != nil { return err } diff --git a/cli/command/image/build_session.go b/cli/command/image/build_session.go index 6015b0820c..c19120758d 100644 --- a/cli/command/image/build_session.go +++ b/cli/command/image/build_session.go @@ -27,16 +27,16 @@ import ( const clientSessionRemote = "client-session" -func isSessionSupported(dockerCli command.Cli) bool { - if versions.GreaterThanOrEqualTo(dockerCli.Client().ClientVersion(), "1.39") { +func isSessionSupported(dockerCli command.Cli, forStream bool) bool { + if !forStream && versions.GreaterThanOrEqualTo(dockerCli.Client().ClientVersion(), "1.39") { return true } return dockerCli.ServerInfo().HasExperimental && versions.GreaterThanOrEqualTo(dockerCli.Client().ClientVersion(), "1.31") } -func trySession(dockerCli command.Cli, contextDir string) (*session.Session, error) { +func trySession(dockerCli command.Cli, contextDir string, forStream bool) (*session.Session, error) { var s *session.Session - if isSessionSupported(dockerCli) { + if isSessionSupported(dockerCli, forStream) { sharedKey, err := getBuildSharedKey(contextDir) if err != nil { return nil, errors.Wrap(err, "failed to get build shared key")