diff --git a/.circleci/config.yml b/.circleci/config.yml index 5a549be595858..3facdd9db8b36 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -212,7 +212,7 @@ jobs: - restore_cache: key: go-mod-v1-{{ checksum "go.sum" }} - check-changed-files-or-halt - - run: 'snap install go --classic' + - run: './scripts/installgo_linux.sh' - run: 'make deps' - run: 'make test-integration' test-go-mac: diff --git a/scripts/installgo_linux.sh b/scripts/installgo_linux.sh new file mode 100644 index 0000000000000..57b707bf4071f --- /dev/null +++ b/scripts/installgo_linux.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +set -eux + +ARCH=$(uname -m) +GO_VERSION="1.18.3" +GO_ARCH="linux-amd64" +# from https://golang.org/dl +GO_VERSION_SHA="956f8507b302ab0bb747613695cdae10af99bbd39a90cae522b7c0302cc27245" + +setup_go () { + echo "installing go" + curl -L https://golang.org/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz --output go${GO_VERSION}.${GO_ARCH}.tar.gz + if ! echo "${GO_VERSION_SHA} go${GO_VERSION}.${GO_ARCH}.tar.gz" | shasum --algorithm 256 --check -; then + echo "Checksum failed" >&2 + exit 1 + fi + + rm -rf /usr/local/go + tar -C /usr/local -xzf go${GO_VERSION}.${GO_ARCH}.tar.gz + sudo ln -sf /usr/local/go/bin/go /usr/local/bin/go +} + +if command -v go >/dev/null 2>&1; then + echo "Go is already installed" + v=$(go version | { read -r _ _ v _; echo "${v#go}"; }) + echo "$v is installed, required version is ${GO_VERSION}" + if [ "$v" != ${GO_VERSION} ]; then + setup_go + go version + fi +else + setup_go +fi