diff --git a/Makefile b/Makefile
index 1d2e641e1b..1a58e01e12 100755
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,9 @@ ISO_VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).0
 VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
 DEB_VERSION ?= $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
 RPM_VERSION ?= $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
+# used by hack/jenkins/release_build_and_upload.sh and KVM_BUILD_IMAGE, see also BUILD_IMAGE below
+GO_VERSION ?= 1.12.8
+
 INSTALL_SIZE ?= $(shell du out/minikube-windows-amd64.exe | cut -f1)
 BUILDROOT_BRANCH ?= 2018.05.3
 REGISTRY?=gcr.io/k8s-minikube
@@ -31,8 +34,8 @@ COMMIT_NO := $(shell git rev-parse HEAD 2> /dev/null || true)
 COMMIT ?= $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}")
 
 HYPERKIT_BUILD_IMAGE 	?= karalabe/xgo-1.12.x
-# NOTE: "latest" as of 2019-07-12. kube-cross images aren't updated as often as Kubernetes
-BUILD_IMAGE 	?= k8s.gcr.io/kube-cross:v1.12.7-1
+# NOTE: "latest" as of 2019-08-15. kube-cross images aren't updated as often as Kubernetes
+BUILD_IMAGE 	?= k8s.gcr.io/kube-cross:v$(GO_VERSION)-1
 ISO_BUILD_IMAGE ?= $(REGISTRY)/buildroot-image
 KVM_BUILD_IMAGE ?= $(REGISTRY)/kvm-build-image:$(GO_VERSION)
 
@@ -44,10 +47,7 @@ MINIKUBE_UPLOAD_LOCATION := gs://${MINIKUBE_BUCKET}
 MINIKUBE_RELEASES_URL=https://github.com/kubernetes/minikube/releases/download
 
 KERNEL_VERSION ?= 4.15
-
-# Currently *only* used for the KVM_BUILD_IMAGE, see also BUILD_IMAGE above
-GO_VERSION ?= 1.12.7
-
+# latest from https://github.com/golangci/golangci-lint/releases
 GOLINT_VERSION ?= v1.17.1
 # Limit number of default jobs, to avoid the CI builds running out of memory
 GOLINT_JOBS ?= 4
diff --git a/hack/jenkins/installers/check_install_golang.sh b/hack/jenkins/installers/check_install_golang.sh
new file mode 100755
index 0000000000..72abf97250
--- /dev/null
+++ b/hack/jenkins/installers/check_install_golang.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Copyright 2016 The Kubernetes Authors All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -eux -o pipefail
+
+if (($# < 2)); then
+  echo "ERROR: given ! ($#) number of parameters but expect 2."
+  echo "USAGE: ./check_and_install_golang.sh VERSION_TO_INSTALL INSTALL_PATH"
+  exit 1
+fi
+
+VERSION_TO_INSTALL=${1}
+INSTALL_PATH=${2}
+
+# installs or updates golang if right version doesn't exists
+function check_and_install_golang() {
+  if ! go version &>/dev/null; then
+    echo "WARNING: No golang installation found in your enviroment."
+    install_golang "$VERSION_TO_INSTALL" "$INSTALL_PATH"
+    return
+  fi
+
+  # golang has been installed and check its version
+  if [[ $(go version) =~ (([0-9]+)\.([0-9]+).([0-9]+).([\.0-9]*)) ]]; then
+    HOST_VERSION=${BASH_REMATCH[1]}
+    if [ $HOST_VERSION = $VERSION_TO_INSTALL ]; then
+      echo "go version on the host looks good : $HOST_VERSION"
+    else
+      echo "WARNING: expected go version to be $VERSION_TO_INSTALL but got $HOST_VERSION"
+      install_golang "$VERSION_TO_INSTALL" "$INSTALL_PATH"
+    fi
+  else
+    echo "ERROR: Failed to parse golang version: $HOST_VERSION"
+    return
+  fi
+}
+
+# install_golang takes two parameters version and path to install.
+function install_golang() {
+  echo "Installing golang version: $1 on $2"
+  pushd /tmp >/dev/null
+  # using sudo because previously installed versions might have been installed by a different user.
+  # as it was the case on jenkins VM.
+  sudo curl -qL -O "https://storage.googleapis.com/golang/go${1}.linux-amd64.tar.gz" &&
+    sudo tar xfa go${1}.linux-amd64.tar.gz &&
+    sudo rm -rf "${2}/go" &&
+    sudo mv go "${2}/" && sudo chown -R $(whoami): ${2}/go
+  popd >/dev/null
+}
+
+check_and_install_golang
diff --git a/hack/jenkins/minikube_cross_build_and_upload.sh b/hack/jenkins/minikube_cross_build_and_upload.sh
index adbb0189da..2e95fea227 100755
--- a/hack/jenkins/minikube_cross_build_and_upload.sh
+++ b/hack/jenkins/minikube_cross_build_and_upload.sh
@@ -25,6 +25,11 @@ set -eux -o pipefail
 
 readonly bucket="minikube-builds"
 
+# Make sure the right golang version is installed based on Makefile
+WANT_GOLANG_VERSION=$(grep '^GO_VERSION' Makefile | awk '{ print $3 }')
+./hack/jenkins/installers/check_install_golang.sh $WANT_GOLANG_VERSION /usr/local
+
+
 declare -rx BUILD_IN_DOCKER=y
 declare -rx GOPATH=/var/lib/jenkins/go
 declare -rx ISO_BUCKET="${bucket}/${ghprbPullId}"
diff --git a/hack/jenkins/release_build_and_upload.sh b/hack/jenkins/release_build_and_upload.sh
index 3bb3f3d97c..4f9259843e 100755
--- a/hack/jenkins/release_build_and_upload.sh
+++ b/hack/jenkins/release_build_and_upload.sh
@@ -31,6 +31,11 @@ export DEB_VERSION=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}
 export RPM_VERSION=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}
 export GOPATH=~/go
 
+# Make sure the right golang version is installed based on Makefile
+WANT_GOLANG_VERSION=$(grep '^GO_VERSION' Makefile | awk '{ print $3 }')
+./hack/jenkins/installers/check_install_golang.sh $WANT_GOLANG_VERSION /usr/local
+
+
 # Make sure the tag matches the Makefile
 cat Makefile | grep "VERSION_MAJOR ?=" | grep $VERSION_MAJOR
 cat Makefile | grep "VERSION_MINOR ?=" | grep $VERSION_MINOR