From ef6dd828e007e7d193eae40a453512465cd4ac57 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 21 Mar 2023 08:48:17 -0400 Subject: [PATCH 1/5] Delete unused version regex function --- build/lib/release.sh | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/build/lib/release.sh b/build/lib/release.sh index 1ebceb277284..ef262b5ed040 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() { From 5bc37baf5a0dbe53e7b1d27cfb138c7d46a5d4b3 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 21 Mar 2023 08:48:39 -0400 Subject: [PATCH 2/5] Update comments --- cluster/common.sh | 3 +-- cluster/get-kube.sh | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cluster/common.sh b/cluster/common.sh index 1bfabccefca7..d0b4702feeb7 100755 --- a/cluster/common.sh +++ b/cluster/common.sh @@ -35,10 +35,9 @@ 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 diff --git a/cluster/get-kube.sh b/cluster/get-kube.sh index d3075f687e6a..e75997b05bd7 100755 --- a/cluster/get-kube.sh +++ b/cluster/get-kube.sh @@ -75,7 +75,7 @@ KUBE_RELEASE_VERSION_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-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]*)?$" # 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 @@ -194,7 +194,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 From aaa656c41534dee8650745fab01bef9eb427b17d Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 21 Mar 2023 08:50:24 -0400 Subject: [PATCH 3/5] Drop unused regex grouping --- cluster/common.sh | 4 ++-- cluster/get-kube.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cluster/common.sh b/cluster/common.sh index d0b4702feeb7..7fde4d2d6c7c 100755 --- a/cluster/common.sh +++ b/cluster/common.sh @@ -41,8 +41,8 @@ export KUBE_RELEASE_VERSION_DASHED_REGEX="v(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-(0|[1 # # 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]*)?" +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 e75997b05bd7..b2af2bb78ec1 100755 --- a/cluster/get-kube.sh +++ b/cluster/get-kube.sh @@ -72,7 +72,7 @@ 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]*)?$" +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 "v1.2.0-881+376438b69c7612") or resolves the "published" version From b620e2b7b54c2045484be1e9723bc9c3c89f641c Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 21 Mar 2023 08:54:19 -0400 Subject: [PATCH 4/5] Annotate CI version regexes --- cluster/common.sh | 1 + cluster/get-kube.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/cluster/common.sh b/cluster/common.sh index 7fde4d2d6c7c..00a4f59e777f 100755 --- a/cluster/common.sh +++ b/cluster/common.sh @@ -41,6 +41,7 @@ export KUBE_RELEASE_VERSION_DASHED_REGEX="v(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-(0|[1 # # 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 +# 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]*)?" diff --git a/cluster/get-kube.sh b/cluster/get-kube.sh index b2af2bb78ec1..60d9c33a1c5a 100755 --- a/cluster/get-kube.sh +++ b/cluster/get-kube.sh @@ -72,6 +72,7 @@ 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]*))?$" +# 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", From c6ad7627c566aa15ca7d0f0c81a715668ab439da Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 21 Mar 2023 08:59:41 -0400 Subject: [PATCH 5/5] Make prerelease tag optional in CI versions --- cluster/common.sh | 6 +++--- cluster/get-kube.sh | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cluster/common.sh b/cluster/common.sh index 00a4f59e777f..fe53ba0c02a3 100755 --- a/cluster/common.sh +++ b/cluster/common.sh @@ -41,9 +41,9 @@ export KUBE_RELEASE_VERSION_DASHED_REGEX="v(0|[1-9][0-9]*)-(0|[1-9][0-9]*)-(0|[1 # # 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 -# 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]*)?" +# 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 60d9c33a1c5a..e1b6fe986607 100755 --- a/cluster/get-kube.sh +++ b/cluster/get-kube.sh @@ -72,8 +72,8 @@ 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]*))?$" -# 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]*)?$" +# 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 "v1.2.0-881+376438b69c7612") or resolves the "published" version