Repository navigation
ci(renovate): bump indirect Go deps and enable OSV vuln alerts - #3026
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the project's dependency management and security automation by refining the Renovate configuration. The changes allow the system to automatically address security advisories found in transitive dependencies, which were previously ignored, thereby improving the repository's OpenSSF Scorecard vulnerability score. Highlights
New Features🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on Gemini (@gemini-code-assist) comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe Renovate configuration adds OSV vulnerability alert handling with labels and a package rule that enables and groups indirect Go module updates. ChangesRenovate Configuration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request updates the Renovate configuration in .github/renovate.json to enable OSV vulnerability alerts and group indirect Go module updates into a single rolling PR to address transitive dependency vulnerabilities. The review feedback points out that the PR does not comply with the repository's contribution guidelines, specifically noting a missing release note block in the PR description, an invalid commit scope (renovate), and a missing commit sign-off.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| "automerge": false, | ||
| "platformAutomerge": false, | ||
| "prConcurrentLimit": 5, | ||
| "osvVulnerabilityAlerts": true, |
There was a problem hiding this comment.
The pull request does not meet the repository's commit and PR requirements:
-
Missing Release Note: The PR body is missing the required
release-noteblock. Please add a release note block to the PR description following this format:```release-note type(scope): human-readable changelog entry -
Invalid Commit Scope: The commit scope
renovateinci(renovate): bump indirect Go deps and enable OSV vuln alertsis not a valid scope. According to the repository style guide, valid scopes are:- System:
dashboard,platform,cilium,kube-ovn,linstor,fluxcd,cluster-api - Apps:
postgres,mariadb,redis,kafka,clickhouse,kubernetes,virtual-machine - Meta:
api,hack,tests,ci,docs - Package-specific: any
<package-name>matching a directory underpackages/
Please update the commit message to use a valid scope (e.g.,
ci(ci)orciif appropriate) and ensure the commit is signed off (git commit --signoff). - System:
References
- PR body must contain a release note block and commits must follow Conventional Commits format with valid scopes and signoff. (link)
VerdictLGTM with non-blocking notes Config validates strictly ( Risks to downstream consumersThese are not blockers but should be acknowledged in the Known gap section, since the Scorecard
Findings[NIT] PR body — empty
Red-team concerns[INFO] First-activation burst: with 21 currently-open OSV advisories and [INFO] Grouped indirect bump rebase churn on self-hosted CI: the [INFO] [INFO] Backports to Caveats
Recommended follow-ups
|
Aleksei Sviridkin (lexfrei)
left a comment
There was a problem hiding this comment.
LGTM — APPROVE. The config is valid and meets its stated goal; the notes below are non-blocking.
Business context
Renovate skips indirect Go deps by default, so the transitive golang.org/x/{crypto,net,sys} advisories driving the OpenSSF Scorecard Vulnerabilities check never got a PR; this enables indirect gomod bumps plus OSV-backed security PRs to close them.
Blockers
None. JSON parses and the schema validates (osvVulnerabilityAlerts, vulnerabilityAlerts, and matchDepTypes: ["indirect"] are all valid Renovate options; the ["indirect"] and ["golang"] depTypes are disjoint, so the new rule does not conflict with the existing toolchain-disable rule).
Non-blocking notes
-
Indirect
k8s.io/**deps leave thekuberneteslockstep group. Thekubernetesrule matchesk8s.io/**by package name with no depType filter, so it also selects indirect k8s modules; the new indirect rule comes later inpackageRulesand setsgroupName: "indirect go modules", and Renovate applies last-match-wins, so indirect k8s deps land in the indirect group instead of the kubernetes group. Impact is low: the lockstep concern is the direct API surface (controller-runtime,client-go,apimachinery, ...), which stays direct and grouped, and indirect deps are reconciled bygomodTidyvia MVS. If strict lockstep across indirect k8s modules is wanted, excludek8s.io/**/sigs.k8s.io/**from the indirect rule or place it before the kubernetes rule.
Evidence:.github/renovate.json:23(kubernetes rule,matchPackageNames: ["sigs.k8s.io/controller-runtime", "k8s.io/**"], nomatchDepTypes) vs.github/renovate.json:34,36(indirect rule, later, setsgroupName); existing indirect target atgo.mod:127(k8s.io/kms v0.34.1 // indirect). -
Security PRs intentionally drop the
do-not-merge/holdlabel.vulnerabilityAlerts.labelsreplaces (not adds to) the globallabels, so vulnerability PRs carry only["automated", "security"]and lose the globaldo-not-merge/holdgate. This matches the stated intent of mergeable security PRs, so it is a deliberate tradeoff rather than a defect; they still need a manual merge sinceautomerge: falseandplatformAutomerge: falseare unchanged. If the hold gate should also apply to security PRs, useaddLabelsforsecurityinstead of overridinglabels.
Evidence:.github/renovate.json:9(globallabels: ["automated", "do-not-merge/hold"]) vs.github/renovate.json:16(vulnerabilityAlerts.labels: ["automated", "security"]).
Renovate skips indirect gomod deps by default, so transitive modules (golang.org/x/crypto, x/net, x/sys) that carry OSV advisories never get a PR — leaving the OpenSSF Scorecard Vulnerabilities check pinned at 0 even after #3019 bumped x/crypto in the root module only. - enable indirect gomod updates, grouped into one rolling PR - turn on osvVulnerabilityAlerts so vulnerable deps get dedicated, mergeable security PRs (labeled `security`, not `do-not-merge/hold`) Does not address GO-2025-3512 (kubevirt.io/csi-driver): no fixed version exists upstream and Renovate cannot resolve the module, so the Vulnerabilities check stays at 0 until that advisory is suppressed or patched separately. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: Myasnikov Daniil <[email protected]>
3bad10a
e338de6 to
3bad10a
Compare
|
Thanks Aleksei Sviridkin (@lexfrei) and IvanHunters for the thorough reviews. Pushed a follow-up (rebased, Changed
Intentionally left as-is
|
Aleksei Sviridkin (lexfrei)
left a comment
There was a problem hiding this comment.
LGTM — re-review on the current head; config validates strictly (renovate-config-validator --strict).
Business context: Renovate skips indirect Go deps by default, so the transitive golang.org/x/{crypto,net,sys} advisories driving the OpenSSF Scorecard Vulnerabilities check never got a PR; this enables indirect gomod bumps plus OSV-backed security PRs to close them.
Scoped exactly as described: against main the PR adds osvVulnerabilityAlerts, the vulnerabilityAlerts block, and the indirect go modules rule. (The dockerfile/github-actions managers and pinDigests already live on main — they show up in a branch-to-branch diff but are not part of this PR.)
Resolved since the earlier (now-dismissed) review: the indirect rule is placed before the kubernetes rule, so an indirect k8s.io/** dep stays in the kubernetes lockstep group via Renovate's last-match-wins — the rule order and the in-file comment both confirm it.
Non-blocking (carried over)
vulnerabilityAlerts.labelsreplaces (not adds to) the globallabels, so security PRs carry["automated","security"]and drop the globaldo-not-merge/holdgate. This is deliberate (mergeable security PRs) and they still require a manual merge (automerge/platformAutomergeremain false), so it's acceptable — flagging only in case the hold gate should also cover security PRs (useaddLabelsinstead oflabels). No blockers.
What
Makes Renovate open the dependency PRs that close the OpenSSF Scorecard
Vulnerabilitiesadvisories, instead of doing them by hand (as in #3019).golang.org/x/crypto,x/net, andx/sys— the transitive deps carrying the 20 OSV advisories — never got a PR.osvVulnerabilityAlertsso vulnerable deps get dedicated, mergeable security PRs (labeledsecurity, not the globaldo-not-merge/hold).Why #3019 wasn't enough
#3019 bumped
x/cryptoin the root module only. The repo has 5go.modmodules; the same advisories live intoken-proxy(x/crypto v0.50.0),kubevirt-csi-driver, andkubeovn-webhook(x/net / x/sys). The ScorecardVulnerabilitiescheck scans repo-wide and is all-or-nothing, so the count never dropped (still 0/10, 21 advisories).Known gap
This does not fix
GO-2025-3512(kubevirt.io/csi-driver): no fixed version exists upstream and Renovate can't even resolve the module (no-resultin the Dependency Dashboard #2996). Until that one advisory is suppressed via.osv-scanner.tomlor patched upstream, the Vulnerabilities check stays at 0/10. Tracked separately as a follow-up.Validation
renovate-config-validator: Config validated successfully.Summary by CodeRabbit