Skip to content

Commit

Permalink
scripts: default to using .go-version's version for tests and builds
Browse files Browse the repository at this point in the history
Additionally, provide ability to opt-out of the .go-version and use a
custom one via env vars: FORCE_HOST_GO and GO_VERSION.

Signed-off-by: Madhav Jivrajani <[email protected]>
  • Loading branch information
MadhavJivrajani committed May 7, 2024
1 parent 126e0d5 commit e094139
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions scripts/test_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -456,3 +456,27 @@ function git_assert_branch_in_sync {
log_warning "Cannot verify consistency with the origin, as git is on detached branch."
fi
}

# The version present in the .go-verion is the default version that test and build scripts will use.
# However, it is possible to control the version that should be used with the help of env vars:
# - FORCE_HOST_GO: if set to a non-empty value, use the version of go installed in system's $PATH.
# - GO_VERSION: desired version of go to be used, might differ from what is present in .go-version.
# If empty, the value defaults to the version in .go-version.
function determine_go_version {
# Borrowing from how Kubernetes does this:
# https://github.com/kubernetes/kubernetes/blob/17854f0e0a153b06f9d0db096e2cd8ab2fa89c11/hack/lib/golang.sh#L510-L520
#
# default GO_VERSION to content of .go-version
GO_VERSION="${GO_VERSION:-"$(cat "${ETCD_ROOT_DIR}/.go-version")"}"
if [ "${GOTOOLCHAIN:-auto}" != 'auto' ]; then
# no-op, just respect GOTOOLCHAIN
:
elif [ -n "${FORCE_HOST_GO:-}" ]; then
export GOTOOLCHAIN='local'
else
GOTOOLCHAIN="go${GO_VERSION}"
export GOTOOLCHAIN
fi
}

determine_go_version

0 comments on commit e094139

Please sign in to comment.