mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Merge pull request #16919 from ihmccreery/enable-prerelease-push-official-release
Auto commit by PR queue bot
This commit is contained in:
commit
c8d2ec6ffd
131
build/common.sh
131
build/common.sh
@ -348,18 +348,26 @@ function kube::build::destroy_container() {
|
|||||||
# version
|
# version
|
||||||
# Returns:
|
# Returns:
|
||||||
# If version is a valid release version
|
# If version is a valid release version
|
||||||
# Sets:
|
# Sets: (e.g. for '1.2.3-alpha.4')
|
||||||
# BASH_REMATCH, so you can do something like:
|
# VERSION_MAJOR (e.g. '1')
|
||||||
# local -r version_major="${BASH_REMATCH[1]}"
|
# VERSION_MINOR (e.g. '2')
|
||||||
# local -r version_minor="${BASH_REMATCH[2]}"
|
# VERSION_PATCH (e.g. '3')
|
||||||
# local -r version_patch="${BASH_REMATCH[3]}"
|
# VERSION_EXTRA (e.g. '-alpha.4')
|
||||||
|
# VERSION_PRERELEASE (e.g. 'alpha')
|
||||||
|
# VERSION_PRERELEASE_REV (e.g. '4')
|
||||||
function kube::release::parse_and_validate_release_version() {
|
function kube::release::parse_and_validate_release_version() {
|
||||||
local -r version_regex="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"
|
local -r version_regex="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(-(beta|alpha)\\.(0|[1-9][0-9]*))?$"
|
||||||
local -r version="${1-}"
|
local -r version="${1-}"
|
||||||
[[ "${version}" =~ ${version_regex} ]] || {
|
[[ "${version}" =~ ${version_regex} ]] || {
|
||||||
kube::log::error "Invalid release version: '${version}'"
|
kube::log::error "Invalid release version: '${version}', must match regex ${version_regex}"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
VERSION_MAJOR="${BASH_REMATCH[1]}"
|
||||||
|
VERSION_MINOR="${BASH_REMATCH[2]}"
|
||||||
|
VERSION_PATCH="${BASH_REMATCH[3]}"
|
||||||
|
VERSION_EXTRA="${BASH_REMATCH[4]}"
|
||||||
|
VERSION_PRERELEASE="${BASH_REMATCH[5]}"
|
||||||
|
VERSION_PRERELEASE_REV="${BASH_REMATCH[6]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Validate a ci version
|
# Validate a ci version
|
||||||
@ -370,23 +378,29 @@ function kube::release::parse_and_validate_release_version() {
|
|||||||
# version
|
# version
|
||||||
# Returns:
|
# Returns:
|
||||||
# If version is a valid ci version
|
# If version is a valid ci version
|
||||||
# Sets:
|
# Sets: (e.g. for '1.2.3-alpha.4.56+abcd789-dirty')
|
||||||
# BASH_REMATCH, so you can do something like:
|
# VERSION_MAJOR (e.g. '1')
|
||||||
# local -r version_major="${BASH_REMATCH[1]}"
|
# VERSION_MINOR (e.g. '2')
|
||||||
# local -r version_minor="${BASH_REMATCH[2]}"
|
# VERSION_PATCH (e.g. '3')
|
||||||
# local -r version_patch="${BASH_REMATCH[3]}"
|
# VERSION_PRERELEASE (e.g. 'alpha')
|
||||||
# local -r version_prerelease="${BASH_REMATCH[4]}"
|
# VERSION_PRERELEASE_REV (e.g. '4')
|
||||||
# local -r version_prerelease_rev="${BASH_REMATCH[5]}"
|
# VERSION_BUILD_INFO (e.g. '.56+abcd789-dirty')
|
||||||
# local -r version_build_info="${BASH_REMATCH[6]}"
|
# VERSION_COMMITS (e.g. '56')
|
||||||
# local -r version_commits="${BASH_REMATCH[7]}"
|
|
||||||
function kube::release::parse_and_validate_ci_version() {
|
function kube::release::parse_and_validate_ci_version() {
|
||||||
# Accept things like "v1.2.3-alpha.0.456+abcd789-dirty" or "v1.2.3-beta.0.456"
|
# Accept things like "v1.2.3-alpha.4.56+abcd789-dirty" or "v1.2.3-beta.4.56"
|
||||||
local -r version_regex="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-(beta|alpha)\\.(0|[1-9][0-9]*)(\\.(0|[1-9][0-9]*)\\+[-0-9a-z]*)?$"
|
local -r version_regex="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-(beta|alpha)\\.(0|[1-9][0-9]*)(\\.(0|[1-9][0-9]*)\\+[-0-9a-z]*)?$"
|
||||||
local -r version="${1-}"
|
local -r version="${1-}"
|
||||||
[[ "${version}" =~ ${version_regex} ]] || {
|
[[ "${version}" =~ ${version_regex} ]] || {
|
||||||
kube::log::error "Invalid ci version: '${version}'"
|
kube::log::error "Invalid ci version: '${version}', must match regex ${version_regex}"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
VERSION_MAJOR="${BASH_REMATCH[1]}"
|
||||||
|
VERSION_MINOR="${BASH_REMATCH[2]}"
|
||||||
|
VERSION_PATCH="${BASH_REMATCH[3]}"
|
||||||
|
VERSION_PRERELEASE="${BASH_REMATCH[4]}"
|
||||||
|
VERSION_PRERELEASE_REV="${BASH_REMATCH[5]}"
|
||||||
|
VERSION_BUILD_INFO="${BASH_REMATCH[6]}"
|
||||||
|
VERSION_COMMITS="${BASH_REMATCH[7]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@ -1093,8 +1107,8 @@ function kube::release::gcs::publish_ci() {
|
|||||||
kube::release::gcs::verify_release_files || return 1
|
kube::release::gcs::verify_release_files || return 1
|
||||||
|
|
||||||
kube::release::parse_and_validate_ci_version "${KUBE_GCS_PUBLISH_VERSION}" || return 1
|
kube::release::parse_and_validate_ci_version "${KUBE_GCS_PUBLISH_VERSION}" || return 1
|
||||||
local -r version_major="${BASH_REMATCH[1]}"
|
local -r version_major="${VERSION_MAJOR}"
|
||||||
local -r version_minor="${BASH_REMATCH[2]}"
|
local -r version_minor="${VERSION_MINOR}"
|
||||||
|
|
||||||
local -r publish_files=(ci/latest.txt ci/latest-${version_major}.txt ci/latest-${version_major}.${version_minor}.txt)
|
local -r publish_files=(ci/latest.txt ci/latest-${version_major}.txt ci/latest-${version_major}.${version_minor}.txt)
|
||||||
|
|
||||||
@ -1123,8 +1137,8 @@ function kube::release::gcs::publish_official() {
|
|||||||
kube::release::gcs::verify_release_files || return 1
|
kube::release::gcs::verify_release_files || return 1
|
||||||
|
|
||||||
kube::release::parse_and_validate_release_version "${KUBE_GCS_PUBLISH_VERSION}" || return 1
|
kube::release::parse_and_validate_release_version "${KUBE_GCS_PUBLISH_VERSION}" || return 1
|
||||||
local -r version_major="${BASH_REMATCH[1]}"
|
local -r version_major="${VERSION_MAJOR}"
|
||||||
local -r version_minor="${BASH_REMATCH[2]}"
|
local -r version_minor="${VERSION_MINOR}"
|
||||||
|
|
||||||
local publish_files
|
local publish_files
|
||||||
if [[ "${release_kind}" == 'latest' ]]; then
|
if [[ "${release_kind}" == 'latest' ]]; then
|
||||||
@ -1171,6 +1185,10 @@ function kube::release::gcs::verify_release_files() {
|
|||||||
# publish_file: the GCS location to look in
|
# publish_file: the GCS location to look in
|
||||||
# Returns:
|
# Returns:
|
||||||
# If new version is greater than the GCS version
|
# If new version is greater than the GCS version
|
||||||
|
#
|
||||||
|
# TODO(16529): This should all be outside of build an in release, and should be
|
||||||
|
# refactored to reduce code duplication. Also consider using strictly nested
|
||||||
|
# if and explicit handling of equals case.
|
||||||
function kube::release::gcs::verify_release_gt() {
|
function kube::release::gcs::verify_release_gt() {
|
||||||
local -r publish_file="${1-}"
|
local -r publish_file="${1-}"
|
||||||
local -r new_version=${KUBE_GCS_PUBLISH_VERSION}
|
local -r new_version=${KUBE_GCS_PUBLISH_VERSION}
|
||||||
@ -1178,9 +1196,11 @@ function kube::release::gcs::verify_release_gt() {
|
|||||||
|
|
||||||
kube::release::parse_and_validate_release_version "${new_version}" || return 1
|
kube::release::parse_and_validate_release_version "${new_version}" || return 1
|
||||||
|
|
||||||
local -r version_major="${BASH_REMATCH[1]}"
|
local -r version_major="${VERSION_MAJOR}"
|
||||||
local -r version_minor="${BASH_REMATCH[2]}"
|
local -r version_minor="${VERSION_MINOR}"
|
||||||
local -r version_patch="${BASH_REMATCH[3]}"
|
local -r version_patch="${VERSION_PATCH}"
|
||||||
|
local -r version_prerelease="${VERSION_PRERELEASE}"
|
||||||
|
local -r version_prerelease_rev="${VERSION_PRERELEASE_REV}"
|
||||||
|
|
||||||
local gcs_version
|
local gcs_version
|
||||||
if gcs_version="$(gsutil cat "${publish_file_dst}")"; then
|
if gcs_version="$(gsutil cat "${publish_file_dst}")"; then
|
||||||
@ -1189,9 +1209,11 @@ function kube::release::gcs::verify_release_gt() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
local -r gcs_version_major="${BASH_REMATCH[1]}"
|
local -r gcs_version_major="${VERSION_MAJOR}"
|
||||||
local -r gcs_version_minor="${BASH_REMATCH[2]}"
|
local -r gcs_version_minor="${VERSION_MINOR}"
|
||||||
local -r gcs_version_patch="${BASH_REMATCH[3]}"
|
local -r gcs_version_patch="${VERSION_PATCH}"
|
||||||
|
local -r gcs_version_prerelease="${VERSION_PRERELEASE}"
|
||||||
|
local -r gcs_version_prerelease_rev="${VERSION_PRERELEASE_REV}"
|
||||||
|
|
||||||
local greater=true
|
local greater=true
|
||||||
if [[ "${version_major}" -lt "${gcs_version_major}" ]]; then
|
if [[ "${version_major}" -lt "${gcs_version_major}" ]]; then
|
||||||
@ -1202,7 +1224,26 @@ function kube::release::gcs::verify_release_gt() {
|
|||||||
greater=false
|
greater=false
|
||||||
elif [[ "${version_minor}" -gt "${gcs_version_minor}" ]]; then
|
elif [[ "${version_minor}" -gt "${gcs_version_minor}" ]]; then
|
||||||
: # fall out
|
: # fall out
|
||||||
elif [[ "${version_patch}" -le "${gcs_version_patch}" ]]; then
|
elif [[ "${version_patch}" -lt "${gcs_version_patch}" ]]; then
|
||||||
|
greater=false
|
||||||
|
elif [[ "${version_patch}" -gt "${gcs_version_patch}" ]]; then
|
||||||
|
: # fall out
|
||||||
|
# Use lexicographic (instead of integer) comparison because
|
||||||
|
# version_prerelease is a string, ("alpha" or "beta",) but first check if
|
||||||
|
# either is an official release (i.e. empty prerelease string).
|
||||||
|
#
|
||||||
|
# We have to do this because lexicographically "beta" > "alpha" > "", but
|
||||||
|
# we want official > beta > alpha.
|
||||||
|
elif [[ -n "${version_prerelease}" && -z "${gcs_version_prerelease}" ]]; then
|
||||||
|
greater=false
|
||||||
|
elif [[ -z "${version_prerelease}" && -n "${gcs_version_prerelease}" ]]; then
|
||||||
|
: # fall out
|
||||||
|
elif [[ "${version_prerelease}" < "${gcs_version_prerelease}" ]]; then
|
||||||
|
greater=false
|
||||||
|
elif [[ "${version_prerelease}" > "${gcs_version_prerelease}" ]]; then
|
||||||
|
: # fall out
|
||||||
|
# Finally resort to -le here, since we want strictly-greater-than.
|
||||||
|
elif [[ "${version_prerelease_rev}" -le "${gcs_version_prerelease_rev}" ]]; then
|
||||||
greater=false
|
greater=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1228,6 +1269,10 @@ function kube::release::gcs::verify_release_gt() {
|
|||||||
# publish_file: the GCS location to look in
|
# publish_file: the GCS location to look in
|
||||||
# Returns:
|
# Returns:
|
||||||
# If new version is greater than the GCS version
|
# If new version is greater than the GCS version
|
||||||
|
#
|
||||||
|
# TODO(16529): This should all be outside of build an in release, and should be
|
||||||
|
# refactored to reduce code duplication. Also consider using strictly nested
|
||||||
|
# if and explicit handling of equals case.
|
||||||
function kube::release::gcs::verify_ci_ge() {
|
function kube::release::gcs::verify_ci_ge() {
|
||||||
local -r publish_file="${1-}"
|
local -r publish_file="${1-}"
|
||||||
local -r new_version=${KUBE_GCS_PUBLISH_VERSION}
|
local -r new_version=${KUBE_GCS_PUBLISH_VERSION}
|
||||||
@ -1235,12 +1280,12 @@ function kube::release::gcs::verify_ci_ge() {
|
|||||||
|
|
||||||
kube::release::parse_and_validate_ci_version "${new_version}" || return 1
|
kube::release::parse_and_validate_ci_version "${new_version}" || return 1
|
||||||
|
|
||||||
local -r version_major="${BASH_REMATCH[1]}"
|
local -r version_major="${VERSION_MAJOR}"
|
||||||
local -r version_minor="${BASH_REMATCH[2]}"
|
local -r version_minor="${VERSION_MINOR}"
|
||||||
local -r version_patch="${BASH_REMATCH[3]}"
|
local -r version_patch="${VERSION_PATCH}"
|
||||||
local -r version_prerelease="${BASH_REMATCH[4]}"
|
local -r version_prerelease="${VERSION_PRERELEASE}"
|
||||||
local -r version_prerelease_rev="${BASH_REMATCH[5]}"
|
local -r version_prerelease_rev="${VERSION_PRERELEASE_REV}"
|
||||||
local -r version_commits="${BASH_REMATCH[7]}"
|
local -r version_commits="${VERSION_COMMITS}"
|
||||||
|
|
||||||
local gcs_version
|
local gcs_version
|
||||||
if gcs_version="$(gsutil cat "${publish_file_dst}")"; then
|
if gcs_version="$(gsutil cat "${publish_file_dst}")"; then
|
||||||
@ -1249,12 +1294,12 @@ function kube::release::gcs::verify_ci_ge() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
local -r gcs_version_major="${BASH_REMATCH[1]}"
|
local -r gcs_version_major="${VERSION_MAJOR}"
|
||||||
local -r gcs_version_minor="${BASH_REMATCH[2]}"
|
local -r gcs_version_minor="${VERSION_MINOR}"
|
||||||
local -r gcs_version_patch="${BASH_REMATCH[3]}"
|
local -r gcs_version_patch="${VERSION_PATCH}"
|
||||||
local -r gcs_version_prerelease="${BASH_REMATCH[4]}"
|
local -r gcs_version_prerelease="${VERSION_PRERELEASE}"
|
||||||
local -r gcs_version_prerelease_rev="${BASH_REMATCH[5]}"
|
local -r gcs_version_prerelease_rev="${VERSION_PRERELEASE_REV}"
|
||||||
local -r gcs_version_commits="${BASH_REMATCH[7]}"
|
local -r gcs_version_commits="${VERSION_COMMITS}"
|
||||||
|
|
||||||
local greater=true
|
local greater=true
|
||||||
if [[ "${version_major}" -lt "${gcs_version_major}" ]]; then
|
if [[ "${version_major}" -lt "${gcs_version_major}" ]]; then
|
||||||
@ -1279,10 +1324,6 @@ function kube::release::gcs::verify_ci_ge() {
|
|||||||
greater=false
|
greater=false
|
||||||
elif [[ "${version_prerelease_rev}" -gt "${gcs_version_prerelease_rev}" ]]; then
|
elif [[ "${version_prerelease_rev}" -gt "${gcs_version_prerelease_rev}" ]]; then
|
||||||
: # fall out
|
: # fall out
|
||||||
elif [[ "${version_patch}" -lt "${gcs_version_patch}" ]]; then
|
|
||||||
greater=false
|
|
||||||
elif [[ "${version_patch}" -gt "${gcs_version_patch}" ]]; then
|
|
||||||
: # fall out
|
|
||||||
# If either version_commits is empty, it will be considered less-than, as
|
# If either version_commits is empty, it will be considered less-than, as
|
||||||
# expected, (e.g. 1.2.3-beta < 1.2.3-beta.1).
|
# expected, (e.g. 1.2.3-beta < 1.2.3-beta.1).
|
||||||
elif [[ "${version_commits}" -lt "${gcs_version_commits}" ]]; then
|
elif [[ "${version_commits}" -lt "${gcs_version_commits}" ]]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user