mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 04:06:03 +00:00
Merge pull request #98836 from hasheddan/kubeadm-ci-k8s-infra
kubeadm: get k8s CI version markers from k8s infra bucket
This commit is contained in:
commit
5fa704c6a8
@ -39,6 +39,7 @@ const (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
kubeReleaseBucketURL = "https://dl.k8s.io"
|
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_\.+]*)?$`)
|
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`)
|
kubeReleaseLabelRegex = regexp.MustCompile(`^((latest|stable)+(-[1-9](\.[1-9]([0-9])?)?)?)\z`)
|
||||||
kubeBucketPrefixes = regexp.MustCompile(`^((release|ci|ci-cross)/)?([-\w_\.+]+)$`)
|
kubeBucketPrefixes = regexp.MustCompile(`^((release|ci|ci-cross)/)?([-\w_\.+]+)$`)
|
||||||
@ -160,7 +161,7 @@ func normalizedBuildVersion(version string) string {
|
|||||||
// Internal helper: split version parts,
|
// Internal helper: split version parts,
|
||||||
// Return base URL and cleaned-up version
|
// Return base URL and cleaned-up version
|
||||||
func splitVersion(version string) (string, string, error) {
|
func splitVersion(version string) (string, string, error) {
|
||||||
var urlSuffix string
|
var bucketURL, urlSuffix string
|
||||||
subs := kubeBucketPrefixes.FindAllStringSubmatch(version, 1)
|
subs := kubeBucketPrefixes.FindAllStringSubmatch(version, 1)
|
||||||
if len(subs) != 1 || len(subs[0]) != 4 {
|
if len(subs) != 1 || len(subs[0]) != 4 {
|
||||||
return "", "", errors.Errorf("invalid version %q", version)
|
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"):
|
case strings.HasPrefix(subs[0][2], "ci"):
|
||||||
// Just use whichever the user specified
|
// Just use whichever the user specified
|
||||||
urlSuffix = subs[0][2]
|
urlSuffix = subs[0][2]
|
||||||
|
bucketURL = kubeCIBucketURL
|
||||||
default:
|
default:
|
||||||
urlSuffix = "release"
|
urlSuffix = "release"
|
||||||
|
bucketURL = kubeReleaseBucketURL
|
||||||
}
|
}
|
||||||
url := fmt.Sprintf("%s/%s", kubeReleaseBucketURL, urlSuffix)
|
url := fmt.Sprintf("%s/%s", bucketURL, urlSuffix)
|
||||||
return url, subs[0][3], nil
|
return url, subs[0][3], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,11 +19,12 @@ package util
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEmptyVersion(t *testing.T) {
|
func TestEmptyVersion(t *testing.T) {
|
||||||
@ -195,16 +196,13 @@ func TestSplitVersion(t *testing.T) {
|
|||||||
{"release/v1.7.0", "https://dl.k8s.io/release", "v1.7.0", 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},
|
{"release/latest-1.7", "https://dl.k8s.io/release", "latest-1.7", true},
|
||||||
// CI builds area
|
// CI builds area
|
||||||
{"ci/latest", "https://dl.k8s.io/ci", "latest", true},
|
{"ci/latest", "https://storage.googleapis.com/k8s-release-dev/ci", "latest", true},
|
||||||
{"ci/latest-1.7", "https://dl.k8s.io/ci", "latest-1.7", 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 label in default (release) area: splitVersion validate only areas.
|
||||||
{"unknown-1", "https://dl.k8s.io/release", "unknown-1", true},
|
{"unknown-1", "https://dl.k8s.io/release", "unknown-1", true},
|
||||||
// unknown area, not valid input.
|
// unknown area, not valid input.
|
||||||
{"unknown/latest-1", "", "", false},
|
{"unknown/latest-1", "", "", false},
|
||||||
}
|
}
|
||||||
// kubeReleaseBucketURL can be overridden during network tests, thus ensure
|
|
||||||
// it will contain value corresponding to expected outcome for this unit test
|
|
||||||
kubeReleaseBucketURL = "https://dl.k8s.io"
|
|
||||||
|
|
||||||
for _, tc := range cases {
|
for _, tc := range cases {
|
||||||
t.Run(fmt.Sprintf("input:%s/label:%s", tc.input, tc.label), func(t *testing.T) {
|
t.Run(fmt.Sprintf("input:%s/label:%s", tc.input, tc.label), func(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user