From 2977a4b1cbebd851355538b8997c161a1db8651f Mon Sep 17 00:00:00 2001 From: Predrag Rogic Date: Fri, 16 Oct 2020 23:06:28 +0100 Subject: [PATCH 1/2] get greatest instead of just latest version --- go.mod | 1 + .../update_kubernetes_version.go | 28 ++++++++----------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index b9919572fe..550dd39329 100644 --- a/go.mod +++ b/go.mod @@ -73,6 +73,7 @@ require ( golang.org/x/build v0.0.0-20190927031335-2835ba2e683f golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 + golang.org/x/mod v0.3.0 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a golang.org/x/sys v0.0.0-20200523222454-059865788121 diff --git a/hack/kubernetes_version/update_kubernetes_version.go b/hack/kubernetes_version/update_kubernetes_version.go index 146506e9b4..50af8e6c81 100644 --- a/hack/kubernetes_version/update_kubernetes_version.go +++ b/hack/kubernetes_version/update_kubernetes_version.go @@ -40,6 +40,7 @@ import ( "text/template" "time" + "golang.org/x/mod/semver" "golang.org/x/oauth2" "github.com/google/go-github/v32/github" @@ -399,26 +400,19 @@ func ghReleases(ctx context.Context, owner, repo, token string) (stable, latest } for _, rl := range rls { ver := rl.GetName() - if ver == "" { + if !semver.IsValid(ver) { continue } - // check if ver version is a release (ie, 'v1.19.2') or a - // pre-release (ie, 'v1.19.3-rc.0' or 'v1.19.0-beta.2') channel ch - // note: github.RepositoryRelease GetPrerelease() bool would be useful for all pre-rels - ch := strings.Split(ver, "-") - if len(ch) == 1 && stable == "" { - stable = ver - } else if len(ch) > 1 && latest == "" { - if strings.HasPrefix(ch[1], "rc") || strings.HasPrefix(ch[1], "beta") { - latest = ver - } + // check if ver version is release (ie, 'v1.19.2') or pre-release (ie, 'v1.19.3-rc.0' or 'v1.19.0-beta.2') + prerls := semver.Prerelease(ver) + if prerls == "" { + stable = semver.Max(ver, stable) + } else if strings.HasPrefix(prerls, "-rc") || strings.HasPrefix(prerls, "-beta") { + latest = semver.Max(ver, latest) } - if stable != "" && latest != "" { - // make sure that v.Latest >= stable - if latest < stable { - latest = stable - } - return stable, latest, nil + // make sure that latest >= stable + if semver.Compare(latest, stable) == -1 { + latest = stable } } if resp.NextPage == 0 { From 2c1efe857af7aec93037ad3fb4de865eba4ab61b Mon Sep 17 00:00:00 2001 From: Predrag Rogic Date: Sat, 17 Oct 2020 00:59:05 +0100 Subject: [PATCH 2/2] fix klog 'no such flag -logtostderr' with InitFlags --- hack/kubernetes_version/update_kubernetes_version.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hack/kubernetes_version/update_kubernetes_version.go b/hack/kubernetes_version/update_kubernetes_version.go index 50af8e6c81..8d68b61324 100644 --- a/hack/kubernetes_version/update_kubernetes_version.go +++ b/hack/kubernetes_version/update_kubernetes_version.go @@ -127,9 +127,10 @@ func (p *Patch) apply(data interface{}) (changed bool, err error) { } func main() { + klog.InitFlags(nil) // write log statements to stderr instead of to files if err := flag.Set("logtostderr", "true"); err != nil { - fmt.Printf("Error setting 'logtostderr' klog flag: %v", err) + fmt.Printf("Error setting 'logtostderr' klog flag: %v\n", err) } flag.Parse() defer klog.Flush()