diff --git a/cmd/infra/stupgrades/main.go b/cmd/infra/stupgrades/main.go index 0549a3022..2a794e370 100644 --- a/cmd/infra/stupgrades/main.go +++ b/cmd/infra/stupgrades/main.go @@ -201,17 +201,21 @@ func (p *proxy) ServeHTTP(w http.ResponseWriter, req *http.Request) { // looking for a prerelease at all. func filterForLatest(rels []upgrade.Release) []upgrade.Release { var filtered []upgrade.Release - var havePre bool + havePre := make(map[string]bool) + haveStable := make(map[string]bool) for _, rel := range rels { - if !rel.Prerelease { - // We found a stable version, we're good now. + major, _, _ := strings.Cut(rel.Tag, ".") + if !rel.Prerelease && !haveStable[major] { + // Remember the first non-pre for each major filtered = append(filtered, rel) - break + haveStable[major] = true + continue } - if rel.Prerelease && !havePre { - // We remember the first prerelease we find. + if rel.Prerelease && !havePre[major] && !haveStable[major] { + // We remember the first prerelease we find, unless we've + // already found a non-pre of the same major. filtered = append(filtered, rel) - havePre = true + havePre[major] = true } } return filtered