diff --git a/cmd/kubeadm/app/util/version.go b/cmd/kubeadm/app/util/version.go index 6ed298d2fda..114a57cb3de 100644 --- a/cmd/kubeadm/app/util/version.go +++ b/cmd/kubeadm/app/util/version.go @@ -40,7 +40,7 @@ const ( var ( kubeReleaseBucketURL = "https://dl.k8s.io" 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(`^[[:lower:]]+(-[-\w_\.]+)?$`) + kubeReleaseLabelRegex = regexp.MustCompile(`(k8s-master|((latest|stable)+(-[1-9](\.[1-9]([0-9])?)?)?))\z`) kubeBucketPrefixes = regexp.MustCompile(`^((release|ci|ci-cross)/)?([-\w_\.+]+)$`) ) @@ -61,6 +61,7 @@ var ( // latest (latest release, including alpha/beta) // latest-1 (latest release in 1.x, including alpha/beta) // latest-1.0 (and similarly 1.1, 1.2, 1.3, ...) +// k8s-master (latest cross build) func KubernetesReleaseVersion(version string) (string, error) { return kubernetesReleaseVersion(version, fetchFromURL) } diff --git a/cmd/kubeadm/app/util/version_test.go b/cmd/kubeadm/app/util/version_test.go index 7029d1d802b..30dad9d0ee9 100644 --- a/cmd/kubeadm/app/util/version_test.go +++ b/cmd/kubeadm/app/util/version_test.go @@ -116,14 +116,13 @@ func TestVersionFromNetwork(t *testing.T) { currentVersion := normalizedBuildVersion(constants.CurrentKubernetesVersion.String()) cases := map[string]T{ - "stable": {"stable-1", "v1.4.6", false, false}, // recursive pointer to stable-1 - "stable-1": {"v1.4.6", "v1.4.6", false, false}, - "stable-1.3": {"v1.3.10", "v1.3.10", false, false}, - "latest": {"v1.6.0-alpha.0", "v1.6.0-alpha.0", false, false}, - "latest-1.3": {"v1.3.11-beta.0", "v1.3.11-beta.0", false, false}, - "empty": {"", currentVersion, true, false}, - "garbage": {"NoSuchKeyThe specified key does not exist.", currentVersion, true, false}, - "unknown": {"The requested URL was not found on this server.", currentVersion, true, false}, + "stable": {"stable-1", "v1.4.6", false, false}, // recursive pointer to stable-1 + "stable-1": {"v1.4.6", "v1.4.6", false, false}, + "stable-1.3": {"v1.3.10", "v1.3.10", false, false}, + "latest": {"v1.6.0-alpha.0", "v1.6.0-alpha.0", false, false}, + "latest-1.3": {"v1.3.11-beta.0", "v1.3.11-beta.0", false, false}, + "latest-1.5": {"", currentVersion, true, false}, // fallback to currentVersion on fetcher error + "invalid-version": {"", "", false, true}, // invalid version cannot be parsed } for k, v := range cases { @@ -195,11 +194,10 @@ func TestSplitVersion(t *testing.T) { {"v1.8.0-alpha.2.1231+afabd012389d53a", "https://dl.k8s.io/release", "v1.8.0-alpha.2.1231+afabd012389d53a", true}, {"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, lookup actual builds at ci-cross/*.txt + // CI builds area {"ci/latest", "https://dl.k8s.io/ci", "latest", true}, - {"ci-cross/latest", "https://dl.k8s.io/ci-cross", "latest", true}, + {"ci/k8s-master", "https://dl.k8s.io/ci", "k8s-master", true}, {"ci/latest-1.7", "https://dl.k8s.io/ci", "latest-1.7", true}, - {"ci-cross/latest-1.7", "https://dl.k8s.io/ci-cross", "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. @@ -238,9 +236,8 @@ func TestKubernetesIsCIVersion(t *testing.T) { {"release/v1.0.0", false}, // CI builds {"ci/latest-1", true}, - {"ci-cross/latest", true}, + {"ci/k8s-master", true}, {"ci/v1.9.0-alpha.1.123+acbcbfd53bfa0a", true}, - {"ci-cross/v1.9.0-alpha.1.123+acbcbfd53bfa0a", true}, } for _, tc := range cases { @@ -269,9 +266,7 @@ func TestCIBuildVersion(t *testing.T) { {"release/0invalid", "", false}, // CI or custom builds {"ci/v1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true}, - {"ci-cross/v1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true}, {"ci/1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true}, - {"ci-cross/1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true}, {"ci/0invalid", "", false}, }