diff --git a/build/lib/release.sh b/build/lib/release.sh index 9a34a8215d3..5515b18f13a 100644 --- a/build/lib/release.sh +++ b/build/lib/release.sh @@ -31,50 +31,6 @@ readonly RELEASE_IMAGES="${LOCAL_OUTPUT_ROOT}/release-images" KUBE_BUILD_CONFORMANCE=${KUBE_BUILD_CONFORMANCE:-n} KUBE_BUILD_PULL_LATEST_IMAGES=${KUBE_BUILD_PULL_LATEST_IMAGES:-y} -# Validate a ci version -# -# Globals: -# None -# Arguments: -# version -# Returns: -# If version is a valid ci version -# Sets: (e.g. for '1.2.3-alpha.4.56+abcdef12345678') -# VERSION_MAJOR (e.g. '1') -# VERSION_MINOR (e.g. '2') -# VERSION_PATCH (e.g. '3') -# VERSION_PRERELEASE (e.g. 'alpha') -# VERSION_PRERELEASE_REV (e.g. '4') -# VERSION_BUILD_INFO (e.g. '.56+abcdef12345678') -# VERSION_COMMITS (e.g. '56') -function kube::release::parse_and_validate_ci_version() { - # Accept things like "v1.2.3-alpha.4.56+abcdef12345678" or "v1.2.3-beta.4" - local -r version_regex="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-([a-zA-Z0-9]+)\\.(0|[1-9][0-9]*)(\\.(0|[1-9][0-9]*)\\+[0-9a-f]{7,40})?$" - local -r version="${1-}" - [[ "${version}" =~ ${version_regex} ]] || { - kube::log::error "Invalid ci version: '${version}', must match regex ${version_regex}" - return 1 - } - - # The VERSION variables are used when this file is sourced, hence - # the shellcheck SC2034 'appears unused' warning is to be ignored. - - # shellcheck disable=SC2034 - VERSION_MAJOR="${BASH_REMATCH[1]}" - # shellcheck disable=SC2034 - VERSION_MINOR="${BASH_REMATCH[2]}" - # shellcheck disable=SC2034 - VERSION_PATCH="${BASH_REMATCH[3]}" - # shellcheck disable=SC2034 - VERSION_PRERELEASE="${BASH_REMATCH[4]}" - # shellcheck disable=SC2034 - VERSION_PRERELEASE_REV="${BASH_REMATCH[5]}" - # shellcheck disable=SC2034 - VERSION_BUILD_INFO="${BASH_REMATCH[6]}" - # shellcheck disable=SC2034 - VERSION_COMMITS="${BASH_REMATCH[7]}" -} - # --------------------------------------------------------------------------- # Build final release artifacts function kube::release::clean_cruft() { diff --git a/cluster/common.sh b/cluster/common.sh index 1bfabccefca..fe53ba0c02a 100755 --- a/cluster/common.sh +++ b/cluster/common.sh @@ -35,15 +35,15 @@ source "${KUBE_ROOT}/hack/lib/util.sh" export KUBE_RELEASE_VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(-([a-zA-Z0-9]+)\\.(0|[1-9][0-9]*))?$" export KUBE_RELEASE_VERSION_DASHED_REGEX="v(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-(0|[1-9][0-9]*)(-([a-zA-Z0-9]+)-(0|[1-9][0-9]*))?" -# KUBE_CI_VERSION_REGEX matches things like "v1.2.3-alpha.4.56+abcdefg" This +# KUBE_CI_VERSION_REGEX matches things like "v1.2.3-alpha.4.56+abcdefg" and "v1.2.3-56+abcdefg" # # NOTE This must match the version_regex in build/common.sh -# kube::release::parse_and_validate_ci_version() # # TODO: KUBE_CI_VERSION_REGEX is used in hack/get-build.sh and KUBE_CI_VERSION_DASHED_REGEX is used in cluster/gce/util.sh, # make sure to remove these vars when not used anymore -export KUBE_CI_VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-([a-zA-Z0-9]+)\\.(0|[1-9][0-9]*)(\\.(0|[1-9][0-9]*)\\+[-0-9a-z]*)?$" -export KUBE_CI_VERSION_DASHED_REGEX="^v(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-([a-zA-Z0-9]+)-(0|[1-9][0-9]*)(-(0|[1-9][0-9]*)\\+[-0-9a-z]*)?" +# v1 .26 .0 -(rc .0 .)?1 ( +014f )? +export KUBE_CI_VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-([a-zA-Z0-9]+\\.(0|[1-9][0-9]*)\\.)?(0|[1-9][0-9]*)(\\+[-0-9a-z]*)?$" +export KUBE_CI_VERSION_DASHED_REGEX="^v(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-([a-zA-Z0-9]+-(0|[1-9][0-9]*)-)?(0|[1-9][0-9]*)(\\+[-0-9a-z]*)?" # Generate kubeconfig data for the created cluster. # Assumed vars: diff --git a/cluster/get-kube.sh b/cluster/get-kube.sh index 15342d26602..15acb7e1a49 100755 --- a/cluster/get-kube.sh +++ b/cluster/get-kube.sh @@ -72,10 +72,11 @@ KUBERNETES_CI_RELEASE_URL="${KUBERNETES_CI_RELEASE_URL:-${KUBERNETES_RELEASE_URL KUBERNETES_RELEASE_URL="${KUBERNETES_RELEASE_URL:-https://dl.k8s.io}" KUBE_RELEASE_VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(-([a-zA-Z0-9]+)\\.(0|[1-9][0-9]*))?$" -KUBE_CI_VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-([a-zA-Z0-9]+)\\.(0|[1-9][0-9]*)(\\.(0|[1-9][0-9]*)\\+[-0-9a-z]*)?$" +# v1 .26 .0 -(rc .0 .)?0 ( +014f )? +KUBE_CI_VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-([a-zA-Z0-9]+\\.(0|[1-9][0-9]*)\\.)?(0|[1-9][0-9]*)(\\+[-0-9a-z]*)?$" # Sets KUBE_VERSION variable if an explicit version number was provided (e.g. "v1.0.6", -# "v1.2.0-alpha.1.881+376438b69c7612") or resolves the "published" version +# "v1.2.0-alpha.1.881+376438b69c7612", or "v1.2.0-881+376438b69c7612") or resolves the "published" version # / (e.g. "release/stable",' "ci/latest-1") by reading from GCS. # # See the docs on getting builds for more information about version @@ -195,7 +196,7 @@ if [[ -z "${KUBERNETES_SKIP_RELEASE_VALIDATION-}" ]]; then elif [[ ${KUBE_VERSION} =~ ${KUBE_CI_VERSION_REGEX} ]]; then # Override KUBERNETES_RELEASE_URL to point to the CI bucket; # this will be used by get-kube-binaries.sh. - # ie. v1.19.0-beta.0.318+b618411f1edb98 + # ie. v1.19.0-beta.0.318+b618411f1edb98 and v1.19.0-318+b618411f1edb98 KUBERNETES_RELEASE_URL="${KUBERNETES_CI_RELEASE_URL}" else echo "Version doesn't match regexp" >&2