From 1d164d0747fa583c61b5a70aa8ae3fbec531aadf Mon Sep 17 00:00:00 2001 From: hasheddan Date: Sat, 6 Feb 2021 10:59:15 -0600 Subject: [PATCH] kubeadm: get k8s CI version markers from k8s infra bucket Updates kubeadm version resolution to use kubernetes community infra bucket to fetch appropriate k8s ci versions. The images are already being pulled from the kubernetes community infra bucket meaning that a mismatch can occur when the ci version is fetched from the google infra bucket and the image is not yet present on k8s infra. Follow-up to kubernetes/kubernetes#97087 Signed-off-by: hasheddan --- cmd/kubeadm/app/util/version.go | 7 +++++-- cmd/kubeadm/app/util/version_test.go | 7 ++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cmd/kubeadm/app/util/version.go b/cmd/kubeadm/app/util/version.go index 9ac0cc7d00c..a0e9b08bf2b 100644 --- a/cmd/kubeadm/app/util/version.go +++ b/cmd/kubeadm/app/util/version.go @@ -39,6 +39,7 @@ const ( var ( kubeReleaseBucketURL = "https://dl.k8s.io" + kubeCIBucketURL = "https://storage.googleapis.com/k8s-release-dev" kubeReleaseRegex = regexp.MustCompile(`^v?(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)([-0-9a-zA-Z_\.+]*)?$`) kubeReleaseLabelRegex = regexp.MustCompile(`^((latest|stable)+(-[1-9](\.[1-9]([0-9])?)?)?)\z`) kubeBucketPrefixes = regexp.MustCompile(`^((release|ci|ci-cross)/)?([-\w_\.+]+)$`) @@ -160,7 +161,7 @@ func normalizedBuildVersion(version string) string { // Internal helper: split version parts, // Return base URL and cleaned-up version func splitVersion(version string) (string, string, error) { - var urlSuffix string + var bucketURL, urlSuffix string subs := kubeBucketPrefixes.FindAllStringSubmatch(version, 1) if len(subs) != 1 || len(subs[0]) != 4 { return "", "", errors.Errorf("invalid version %q", version) @@ -170,10 +171,12 @@ func splitVersion(version string) (string, string, error) { case strings.HasPrefix(subs[0][2], "ci"): // Just use whichever the user specified urlSuffix = subs[0][2] + bucketURL = kubeCIBucketURL default: urlSuffix = "release" + bucketURL = kubeReleaseBucketURL } - url := fmt.Sprintf("%s/%s", kubeReleaseBucketURL, urlSuffix) + url := fmt.Sprintf("%s/%s", bucketURL, urlSuffix) return url, subs[0][3], nil } diff --git a/cmd/kubeadm/app/util/version_test.go b/cmd/kubeadm/app/util/version_test.go index 527ca18bce3..24e2f5a0396 100644 --- a/cmd/kubeadm/app/util/version_test.go +++ b/cmd/kubeadm/app/util/version_test.go @@ -19,11 +19,12 @@ package util import ( "errors" "fmt" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" "path" "strings" "testing" "time" + + "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) func TestEmptyVersion(t *testing.T) { @@ -195,8 +196,8 @@ func TestSplitVersion(t *testing.T) { {"release/v1.7.0", "https://dl.k8s.io/release", "v1.7.0", true}, {"release/latest-1.7", "https://dl.k8s.io/release", "latest-1.7", true}, // CI builds area - {"ci/latest", "https://dl.k8s.io/ci", "latest", true}, - {"ci/latest-1.7", "https://dl.k8s.io/ci", "latest-1.7", true}, + {"ci/latest", "https://storage.googleapis.com/k8s-release-dev/ci", "latest", true}, + {"ci/latest-1.7", "https://storage.googleapis.com/k8s-release-dev/ci", "latest-1.7", true}, // unknown label in default (release) area: splitVersion validate only areas. {"unknown-1", "https://dl.k8s.io/release", "unknown-1", true}, // unknown area, not valid input.