Merge pull request #116809 from liggitt/ci-regex
Fix CI regex for missing rc.0 tags
This commit is contained in:
		@@ -31,50 +31,6 @@ readonly RELEASE_IMAGES="${LOCAL_OUTPUT_ROOT}/release-images"
 | 
				
			|||||||
KUBE_BUILD_CONFORMANCE=${KUBE_BUILD_CONFORMANCE:-n}
 | 
					KUBE_BUILD_CONFORMANCE=${KUBE_BUILD_CONFORMANCE:-n}
 | 
				
			||||||
KUBE_BUILD_PULL_LATEST_IMAGES=${KUBE_BUILD_PULL_LATEST_IMAGES:-y}
 | 
					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
 | 
					# Build final release artifacts
 | 
				
			||||||
function kube::release::clean_cruft() {
 | 
					function kube::release::clean_cruft() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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_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]*))?"
 | 
					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
 | 
					# 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,
 | 
					# 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
 | 
					# 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]*)?$"
 | 
					#                              v1                .26               .0              -(rc            .0                .)?1              (  +014f      )?
 | 
				
			||||||
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]*)?"
 | 
					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.
 | 
					# Generate kubeconfig data for the created cluster.
 | 
				
			||||||
# Assumed vars:
 | 
					# Assumed vars:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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}"
 | 
					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_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",
 | 
					# 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
 | 
				
			||||||
# <path>/<version> (e.g. "release/stable",' "ci/latest-1") by reading from GCS.
 | 
					# <path>/<version> (e.g. "release/stable",' "ci/latest-1") by reading from GCS.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# See the docs on getting builds for more information about version
 | 
					# 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
 | 
					  elif [[ ${KUBE_VERSION} =~ ${KUBE_CI_VERSION_REGEX} ]]; then
 | 
				
			||||||
    # Override KUBERNETES_RELEASE_URL to point to the CI bucket;
 | 
					    # Override KUBERNETES_RELEASE_URL to point to the CI bucket;
 | 
				
			||||||
    # this will be used by get-kube-binaries.sh.
 | 
					    # 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}"
 | 
					    KUBERNETES_RELEASE_URL="${KUBERNETES_CI_RELEASE_URL}"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    echo "Version doesn't match regexp" >&2
 | 
					    echo "Version doesn't match regexp" >&2
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user