use GetReleaseByTag to speed up version searching
parent
f0ba2185c5
commit
7ebd7765e7
|
@ -18,9 +18,9 @@ package config
|
|||
|
||||
import (
|
||||
"context"
|
||||
"sort"
|
||||
"net/http"
|
||||
|
||||
"github.com/google/go-github/github"
|
||||
"github.com/google/go-github/v53/github"
|
||||
"golang.org/x/mod/semver"
|
||||
"k8s.io/minikube/pkg/minikube/constants"
|
||||
)
|
||||
|
@ -39,28 +39,20 @@ func supportedKubernetesVersions() (releases []string) {
|
|||
return releases
|
||||
}
|
||||
|
||||
// GetGithubKubernetesVersions returns reverse-sort Kubernetes releases
|
||||
func GetGithubKubernetesVersions(ver string) ([]string, error) {
|
||||
// IsInGithubKubernetesVersions checks whether ver is in the Github list of k8s versions
|
||||
func IsInGithubKubernetesVersions(ver string) (bool, error) {
|
||||
ghc := github.NewClient(nil)
|
||||
|
||||
opts := &github.ListOptions{PerPage: 100}
|
||||
var releases []string
|
||||
for {
|
||||
rls, resp, err := ghc.Repositories.ListReleases(context.Background(), "kubernetes", "kubernetes", opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
release, resp, err := ghc.Repositories.GetReleaseByTag(context.Background(), "kubernetes", "kubernetes", ver)
|
||||
if err != nil {
|
||||
if resp != nil && resp.StatusCode == http.StatusNotFound {
|
||||
return false, nil
|
||||
}
|
||||
for _, rl := range rls {
|
||||
tag := rl.GetTagName()
|
||||
if semver.IsValid(tag) {
|
||||
releases = append(releases, tag)
|
||||
}
|
||||
}
|
||||
if resp.NextPage == 0 {
|
||||
break
|
||||
}
|
||||
opts.Page = resp.NextPage
|
||||
return false, err
|
||||
}
|
||||
sort.Slice(releases, func(i, j int) bool { return semver.Compare(releases[i], releases[j]) == -1 })
|
||||
return releases, nil
|
||||
if release.GetTagName() == ver {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
return false, nil
|
||||
}
|
||||
|
|
|
@ -1722,11 +1722,11 @@ func validateKubernetesVersion(old *config.ClusterConfig) {
|
|||
out.Styled(style.Check, "Kubernetes version {{.specified}} found in version list", out.V{"specified": nvs})
|
||||
} else {
|
||||
out.WarningT("Specified Kubernetes version {{.specified}} not found in Kubernetes version list. Searching the internet...", out.V{"specified": nvs})
|
||||
k8sVersions, err := cmdcfg.GetGithubKubernetesVersions(kubernetesVer)
|
||||
found, err := cmdcfg.IsInGithubKubernetesVersions(kubernetesVer)
|
||||
if err != nil && !viper.GetBool(force) {
|
||||
exit.Error(reason.KubernetesNotConnect, "error fetching Kubernetes version list from Github", err)
|
||||
}
|
||||
if k8sVersions != nil && contains(k8sVersions, kubernetesVer) {
|
||||
if found {
|
||||
out.Styled(style.Check, "Kubernetes version {{.specified}} found in Github version list", out.V{"specified": nvs})
|
||||
} else if !viper.GetBool(force) {
|
||||
out.WarningT("Kubernetes version not found in Github version list. You can force a Kubernetes version via the --force flag")
|
||||
|
|
1
go.mod
1
go.mod
|
@ -86,7 +86,6 @@ require (
|
|||
github.com/blang/semver v3.5.1+incompatible
|
||||
github.com/docker/cli v24.0.4+incompatible
|
||||
github.com/docker/go-connections v0.4.0
|
||||
github.com/google/go-github v17.0.0+incompatible
|
||||
github.com/google/go-github/v53 v53.2.0
|
||||
github.com/juju/clock v1.0.3
|
||||
github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b
|
||||
|
|
1
go.sum
1
go.sum
|
@ -834,7 +834,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
|
|||
github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0=
|
||||
github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE=
|
||||
github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q=
|
||||
github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=
|
||||
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
|
||||
github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI=
|
||||
github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao=
|
||||
|
|
Loading…
Reference in New Issue