TT-17742: scope eol-notifier distro tracking to policy-approved cycles - #154
TT-17742: scope eol-notifier distro tracking to policy-approved cycles#154rafalgolarz wants to merge 3 commits into
Conversation
dependencies.yaml named specific RHEL/Ubuntu/Debian versions in comments and entry names, but the notifier has no concept of a release cycle filter, so each entry alerted on every cycle its product publishes (e.g. RHEL 6 and 10, not just the approved 7/8/9). The EE-FIPS validated set (RHEL 7/8/9, Ubuntu 24.04 only) had no tracking entries at all. Add an optional `cycles` field to a dependency so it can restrict tracking to named release cycles, and wire it through new-version and EOL detection. Update dependencies.yaml to use it and add the missing EE-FIPS entries.
zizmor findings
Full details are in the workflow run. |
|
This PR enhances the The configuration in Files Changed AnalysisThe changes are focused on the
Architecture & Impact Assessment
graph TD
subgraph "Previous Logic"
A[For each release] --> B{Is product tracked?};
B --> C{Is phase tracked?};
C --> D[Generate EOL Alert];
end
subgraph "New Logic"
E[For each release] --> F{Is product tracked?};
F --> G{Is phase tracked?};
G --> H{"Is release cycle in 'cycles' list?
(or list is empty)"};
H --> I[Generate EOL Alert];
end
Scope Discovery & Context ExpansionThe changes are well-contained within the
Metadata
Powered by Visor from Probelabs Last updated: 2026-08-20T13:50:36.281Z | Triggered by: pr_updated | Commit: 3affbca 💡 TIP: You can chat with Visor using |
✅ Security Check PassedNo security issues found – changes LGTM. ✅ Architecture Check PassedNo architecture issues found – changes LGTM. ✅ Security Check PassedNo security issues found – changes LGTM. \n\n✅ Architecture Check PassedNo architecture issues found – changes LGTM. \n\n \n\n✅ Quality Check PassedNo quality issues found – changes LGTM. Powered by Visor from Probelabs Last updated: 2026-08-20T13:50:35.141Z | Triggered by: pr_updated | Commit: 3affbca 💡 TIP: You can chat with Visor using |
buraksezer
left a comment
There was a problem hiding this comment.
I added a few comments.
| IsLTS: release.IsLTS, | ||
| Dependencies: dependenciesFor(config, name, ""), | ||
| }) | ||
| if dependencies := dependenciesFor(config, name, "", release.Name); len(dependencies) > 0 { |
There was a problem hiding this comment.
I think we should not apply the filter to new-version alerts That alert is there to tell us the vendor shipped something our config doesn't know about yet, so putting it through the config's own list means it can never fire for rhel, ubuntu or debian. And we can't recover it later. recordRun stores every release the API returns, so RHEL 11 counts as seen the day it lands. Add "11" to cycles a year from now and you still hear nothing about it. Phase has the same problem and is passed empty on purpose; the comment on line 348 says why. I'd do the same with the cycle.
There was a problem hiding this comment.
good catch! thank you.
Please re-review.
There was a problem hiding this comment.
The phases look good now. I ran the latest code against the live state. RHEL 9's full support (2027-05-31) appears in the first digest. So that part works. Not tracking eoas for Ubuntu is also correct. For 24.04 and 26.04 it has the same date as eol, so every line should appear twice.
The new-version change is not there. lifecycle.go is the same in both commits. Line-153 still filters by cycle.
And one more small thing. TestDetectAlertsDistroTracksEveryPhase never checks eoes but the comment says it is the phase we would otherwise miss.
There was a problem hiding this comment.
Thanks Burak, reviewing it now 🙏
| product: mariadb | ||
| track: [eol, eoes] | ||
|
|
||
| # RPM: RHEL 7, 8, and 9. |
There was a problem hiding this comment.
All three entries track eol only. I checked and found that RHEL 9 then alerts on 2032.05.31 while Full Support ends 2027.05.31 and we would call Debian 12 dead while Debian LTS runs to 2028-06-30. What about tracking eoes and eoas tracks?
| - name: RPM (RHEL 7, 8, 9) | ||
| product: rhel | ||
| track: [eoas, eol, eoes] | ||
| cycles: ["7", "8", "9"] |
There was a problem hiding this comment.
was not adding RHEL 10 planned? we still have 4 years of support, so not sure
There was a problem hiding this comment.
There was a problem hiding this comment.
per Slack, added 10. thank you
| # DEB: Ubuntu 22.04 LTS, 24.04 LTS, 26.04 LTS, and Debian 12 (Bookworm), | ||
| # 13 (Trixie). Debian's eoes (Debian LTS) runs well past its eol (Debian | ||
| # Security Support), so eol alone would call a release dead years early. | ||
| - name: DEB (Ubuntu 22.04 LTS, 24.04 LTS, 26.04 LTS) |
There was a problem hiding this comment.
what about amazonlinux:2023 and rockylinux:9?
eoas in less than a year
There was a problem hiding this comment.
per Slack, we should skip it
Summary
cyclesfield toDependencyin the eol-notifier config, letting an entry restrict tracking to specific release cycles (e.g. ["7", "8", "9"] for RHEL) instead of every cycle a product publishes..github/eol-notifier/dependencies.yaml: the RHEL/Ubuntu/Debian entries named specific versions in their comments and display names, but with no filtering mechanism the notifier was alerting on every cycle each product publishes (e.g. RHEL 6 and 10, not just the policy-approved 7/8/9). Wire cycles in so tracking now matches what the names claim.Why
dependencies.yamlhad version numbers in dependency names and comments (e.g. "RPM (RHEL 7, 8, 9)"), but Dependency had no field to scope tracking to those cycles - dependenciesFor matched purely on product, so product: rhel picked up every RHEL release cycle from the endoflife.date API regardless of the name. This meant alerts could fire for versions outside the policy's approved set, and the EE-FIPS set (a narrower list than the general DEB/RPM sets) wasn't tracked at all.Jira Ticket
TT-17742
Description
Type of Change
Changes Made
Testing
Checklist
README.md, actiondescriptionfields)shellcheck, used an appropriate shebang and error handling, and preserved required executable permissionsaction.ymlinterface, defaults, outputs, and examples as needed