mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	Merge pull request #16919 from ihmccreery/enable-prerelease-push-official-release
Auto commit by PR queue bot
This commit is contained in:
		
							
								
								
									
										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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user