Merge pull request #5095 from medyagh/update_golang_ver
Ensure specific golang version everywhere in CI based on Makefilepull/5124/head
commit
434ca47c72
12
Makefile
12
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
|
||||
|
|
|
@ -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
|
|
@ -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}"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue