diff --git a/hack/kubernetes_version/update_kubernetes_version.go b/hack/kubernetes_version/update_kubernetes_version.go index 146506e9b4..8d68b61324 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" @@ -126,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() @@ -399,26 +401,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 {