diff --git a/cmd/infra/stupgrades/main.go b/cmd/infra/stupgrades/main.go index 7b8abfd0d..0549a3022 100644 --- a/cmd/infra/stupgrades/main.go +++ b/cmd/infra/stupgrades/main.go @@ -258,9 +258,10 @@ func filterForCompabitility(rels []upgrade.Release, ua, osv string) []upgrade.Re } type cachedReleases struct { - url string - mut sync.RWMutex - current []upgrade.Release + url string + mut sync.RWMutex + current []upgrade.Release + latestRel, latestPre string } func (c *cachedReleases) Releases() []upgrade.Release { @@ -274,8 +275,26 @@ func (c *cachedReleases) Update(ctx context.Context) error { if err != nil { return err } + latestRel, latestPre := "", "" + for _, rel := range rels { + if !rel.Prerelease && latestRel == "" { + latestRel = rel.Tag + } + if rel.Prerelease && latestPre == "" { + latestPre = rel.Tag + } + if latestRel != "" && latestPre != "" { + break + } + } c.mut.Lock() c.current = rels + if latestRel != c.latestRel || latestPre != c.latestPre { + metricLatestReleaseInfo.DeleteLabelValues(c.latestRel, c.latestPre) + metricLatestReleaseInfo.WithLabelValues(latestRel, latestPre).Set(1) + c.latestRel = latestRel + c.latestPre = latestPre + } c.mut.Unlock() return nil } diff --git a/cmd/infra/stupgrades/metrics.go b/cmd/infra/stupgrades/metrics.go index b74dcc61b..60ec6eeef 100644 --- a/cmd/infra/stupgrades/metrics.go +++ b/cmd/infra/stupgrades/metrics.go @@ -27,4 +27,10 @@ var ( Subsystem: "upgrade", Name: "http_requests", }, []string{"target", "result"}) + metricLatestReleaseInfo = promauto.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: "syncthing", + Subsystem: "upgrade", + Name: "latest_release_info", + Help: "Release information", + }, []string{"latest_release", "latest_pre"}) )