Skip to content

ci(renovate): force chore(deps) commits and add area/dependencies label - #3015

Merged
Aleksei Sviridkin (lexfrei) merged 2 commits into
mainfrom
ci/renovate-conventional-labels
Jun 30, 2026
Merged

Aleksei Sviridkin (lexfrei) merged 2 commits into
mainfrom
ci/renovate-conventional-labels

Conversation

@myasnikovdaniil

@myasnikovdaniil myasnikovdaniil commented Jun 23, 2026 •

Copy link
Copy Markdown
Contributor

What

Make Renovate PRs land with consistent, conventional labels and clear a recurring Dependency Dashboard warning.

Why

Renovate's :semanticCommits preset picks fix(deps) for stable (>=1.0) production modules and chore(deps) for 0.x modules. The result:

  • fix(deps) bumps were auto-labeled kind/bug by the PR auto-labeler → routine dependency updates polluted the bug list.
  • The auto-labeler has no deps → area/* mapping, so every Renovate PR fell through to area/uncategorized.
  • kubevirt.io/csi-driver is pinned to an untagged pseudo-version (v0.0.0-2026…) with no release tags, producing a permanent no-result lookup failure on the Dependency Dashboard.

Changes

  • .github/renovate.json
    • Pin semanticCommitType: chore + semanticCommitScope: deps → every dependency PR is now chore(deps): … (maps to kind/cleanup, no more bogus kind/bug).
    • Disable Renovate for kubevirt.io/csi-driver (commit-pinned, unbumpable) to clear the dashboard lookup warning.
  • .github/labels.yml — add area/dependencies (justified: 25+ dependency PRs queued, well over the 3-issue threshold for a new area).
  • .github/workflows/pr-labeler.yaml — map scope deps → area/dependencies.

Result

Future Renovate PRs: chore(deps): … → automated + kind/cleanup + area/dependencies + do-not-merge/hold.

Notes

  • renovate.json / labels.yml take effect once merged; the labeler change applies to PRs opened or edited after merge.
  • The sigs.k8s.io/yaml lookup warning on the dashboard is left untouched — it's a normal module and reads as a transient datasource hiccup, not a config issue.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Added a new area/dependencies label to consistently tag dependency-related pull requests.
    • Updated the PR auto-labeler to map commit/title deps scopes to area/dependencies.
    • Standardized Renovate dependency commit messages to use chore(deps), including special handling for Go module updates, and disabled Renovate updates for the kubevirt.io/csi-driver Go module.

@github-actions github-actions Bot added size/S This PR changes 10-29 lines, ignoring generated files area/uncategorized PR auto-labeler could not map title scope to a known area/*; please review labels Jun 23, 2026
@dosubot dosubot Bot added area/ci Issues or PRs related to CI workflows, GitHub Actions, automation automated Created by automation kind/cleanup Categorizes issue or PR as related to cleanup of code, process, or technical debt labels Jun 23, 2026
@coderabbitai

coderabbitai Bot commented Jun 23, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f6cb2b63-9501-4176-ab88-5a70e1f9c790

📥 Commits

Reviewing files that changed from the base of the PR and between c6bfde1 and 9f1819c.

📒 Files selected for processing (3)
  • .github/labels.yml
  • .github/renovate.json
  • .github/workflows/pr-labeler.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • .github/workflows/pr-labeler.yaml
  • .github/labels.yml
  • .github/renovate.json

📝 Walkthrough

Walkthrough

Renovate now uses chore(deps) semantic commit metadata, skips updates for kubevirt.io/csi-driver, and the PR labeler maps the deps scope to a new area/dependencies label.

Changes

Dependency Label Automation

Layer / File(s) Summary
Renovate semantic commit config and csi-driver exclusion
.github/renovate.json
Sets global Renovate semantic commit metadata, applies the same chore(deps) rule to gomod updates, and disables Renovate updates for kubevirt.io/csi-driver.
area/dependencies label definition and labeler mapping
.github/labels.yml, .github/workflows/pr-labeler.yaml
Defines the area/dependencies label and maps the deps scope to that label in the PR auto-labeler.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

Suggested reviewers

  • kvaps
  • lllamnyp
  • androndo
  • sircthulhu
  • lexfrei

🐇 I hopped through labels with a tidy little grin,
chore(deps) on my banner, fresh winds blowing in.
The deps scope found its burrow, all neat and well-spun,
And the csi-driver sleeps while the updates are done.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main Renovate commit-style and dependency-labeling changes in the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/renovate-conventional-labels

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@myasnikovdaniil myasnikovdaniil self-assigned this Jun 23, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NOT LGTM — the area/dependencies label wiring and the kubevirt.io/csi-driver disable are correct, but the headline change does not actually force chore(deps) for direct dependencies, so the kind/bug labeling this PR targets is not resolved.

Business context: make Renovate PRs land as chore(deps) with an area/dependencies label so dependency bumps stop being labeled kind/bug and area/uncategorized.

Blocker

  1. The top-level semanticCommitType: "chore" is overridden back to fix for direct Go modules, so their PRs stay fix(deps): … and the labeler still applies kind/bug.

config:recommended (extended here) pulls in the :semanticPrefixFixDepsChoreOthers preset, which contributes a packageRule { "matchDepTypes": ["dependencies", "require"], "semanticCommitType": "fix" }. In Renovate, packageRules override top-level config, so this rule wins over the new top-level setting. The gomod manager assigns depType require to direct dependencies (and indirect to indirect ones), so direct-dep PRs resolve to fix, not chore.

I resolved this exact config with Renovate and applied the rules to a synthetic gomod dependency: a direct (require) dep resolves to semanticCommitType=fix, and only an indirect dep resolves to chore. Direct dependencies are the dominant Renovate PR type, so the kind/bug pollution described in the PR body is not fixed.

Evidence: .github/renovate.json:4 (config:recommended in extends) and .github/renovate.json:10-11 (top-level semanticCommitType / semanticCommitScope).

Fix: force the type with a rule that wins over the preset — either add :semanticCommitTypeAll(chore) to extends, or append a user packageRule (user rules are evaluated last), for example { "matchManagers": ["gomod"], "semanticCommitType": "chore", "semanticCommitScope": "deps" }. semanticCommitScope already resolves to deps, so the area/dependencies mapping is unaffected either way.

Not blocking

The rest is correct and the fix above is localized to the commit type:

  • The area/dependencies label and the deps → area/dependencies labeler mapping are consistent. semanticCommitScope resolves to deps for every Renovate PR (whether the type ends up fix or chore), so the scope-to-area mapping clears area/uncategorized regardless of the blocker. Evidence: .github/workflows/pr-labeler.yaml:49, .github/labels.yml:173-175.
  • Disabling kubevirt.io/csi-driver is valid and does not collide with the k8s.io/** group rule, since kubevirt.io/… does not match that glob. Evidence: .github/renovate.json:28-33.
  • JSON parses, the label-schema validation passes, and the label-sync workflow creates the new label on merge to main.

IvanHunters

This comment was marked as duplicate.

@myasnikovdaniil

Copy link
Copy Markdown
Contributor Author

Aleksei Sviridkin (@lexfrei) good catch — confirmed and fixed in 64405e6.

You're right that config:recommended pulls in :semanticPrefixFixDepsChoreOthers, whose packageRule sets { "matchDepTypes": ["dependencies", "require"], "semanticCommitType": "fix" }. Since packageRules override top-level config and the gomod manager assigns depType require to direct dependencies, direct-dep PRs (the dominant type) were still resolving to fix(deps) → kind/bug, so the top-level semanticCommitType: chore never took effect for them.

Went with the user-packageRule approach (scoped to matchManagers: ["gomod"]) since it's evaluated last and so wins over the preset rule, and it self-documents alongside the other rules. The redundant top-level semanticCommitType/semanticCommitScope keys are kept for readability. PTAL.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NOT LGTM — the chore(deps) override is now correct, but the branch is stale against main and would drop the Dockerfile / GitHub Actions digest-pinning that has since landed; rebase and reconcile before merge.

Prior blocker — resolved. The earlier issue (top-level semanticCommitType: chore overridden back to fix for direct Go modules by the :semanticPrefixFixDepsChoreOthers rule from config:recommended) is fixed: the new user packageRule forces semanticCommitType=chore / semanticCommitScope=deps for matchManagers: ["gomod"], and since user packageRules evaluate after preset rules, last-match-wins lands on chore for direct (require) deps too. renovate-config-validator passes and the JSON is valid. The area/dependencies label exists in .github/labels.yml and the labeler maps deps → area/dependencies, so the scope-to-area wiring is intact.

New blocker — stale branch / config regression. main now sets "enabledManagers": ["gomod", "dockerfile", "github-actions"] and carries a packageRule pinning Dockerfile and GitHub Actions to immutable digests — both landed after this branch forked. This branch still has "enabledManagers": ["gomod"] and lacks that rule, so the PR is in a conflicting, unmergeable state, and merging it as-is (taking the branch side of the conflict) would disable the dockerfile/github-actions managers and drop the digest-pinning — a regression of config already on main. Please rebase onto main, keep enabledManagers: ["gomod", "dockerfile", "github-actions"] and the pinDigests rule, and add the new gomod chore rule on top (it's gomod-scoped, so it doesn't affect the Dockerfile/Actions rules).

@myasnikovdaniil
myasnikovdaniil force-pushed the ci/renovate-conventional-labels branch from 64405e6 to c6bfde1 Compare June 29, 2026 09:03
myasnikovdaniil and others added 2 commits June 29, 2026 15:18
Renovate's :semanticCommits preset picks fix(deps) for stable (>=1.0)
production modules and chore(deps) for 0.x modules, so routine bumps
landed inconsistently — fix(deps) bumps were auto-labeled kind/bug,
polluting the bug list. Pin semanticCommitType to chore (and the scope
to deps) so every dependency PR is chore(deps): … and maps to
kind/cleanup.

The PR auto-labeler had no deps -> area/* mapping, so every Renovate PR
fell through to area/uncategorized. Add an area/dependencies label and
map the deps scope to it.

Also disable Renovate for kubevirt.io/csi-driver: it is pinned to an
untagged pseudo-version with no release tags, producing a permanent
no-result lookup failure on the Dependency Dashboard.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Signed-off-by: Myasnikov Daniil <[email protected]>
…Rule

The top-level semanticCommitType=chore did not actually take effect for
direct dependencies. config:recommended extends
:semanticPrefixFixDepsChoreOthers, whose packageRule re-sets
semanticCommitType=fix for depTypes [dependencies, require]. Renovate
packageRules override top-level config, and the gomod manager assigns
depType "require" to direct deps — so direct-dep PRs (the dominant type)
still resolved to fix(deps) and were auto-labeled kind/bug, the exact
pollution this PR set out to remove.

Add a user packageRule (evaluated last, so it wins over the preset rule)
that forces semanticCommitType=chore / scope=deps for the gomod manager.
The top-level keys are now redundant but kept for readability.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Signed-off-by: Myasnikov Daniil <[email protected]>
@myasnikovdaniil
myasnikovdaniil force-pushed the ci/renovate-conventional-labels branch from c6bfde1 to 9f1819c Compare June 29, 2026 10:21
@myasnikovdaniil

Copy link
Copy Markdown
Contributor Author

Aleksei Sviridkin (@lexfrei) Rebased onto the current main (tip 80e3fa9cb) — the branch is now even with it, and the PR shows mergeable.

The config regression you flagged is gone: renovate.json keeps enabledManagers: ["gomod", "dockerfile", "github-actions"] and the pinDigests rule for the dockerfile/github-actions managers, both inherited from main untouched. The diff against main is now purely additive — the top-level chore/deps defaults, the gomod-scoped chore(deps) packageRule, and the kubevirt.io/csi-driver disable sit on top of that config without altering it. PTAL.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — Renovate now emits chore(deps) consistently and the new area/dependencies label is wired through both the label catalog and the auto-labeler.

Verified:

  • Premise holds: pr-labeler maps fix → kind/bug and chore → kind/cleanup, so today's fix(deps) Renovate PRs do land as kind/bug. Forcing chore(deps) lands them as kind/cleanup instead.
  • The extra gomod packageRule is necessary, not redundant: the config extends config:recommended, which pulls in :semanticPrefixFixDepsChoreOthers (re-sets semanticCommitType=fix for direct production deps). A user packageRule evaluated after the preset is required to win it back; the top-level chore alone would not.
  • renovate.json is valid JSON; labels.yml + pr-labeler.yaml are extended in lockstep per the area/* convention.

Non-blocking:

  • Disabling Renovate for kubevirt.io/csi-driver removes it from automated bump/security tracking; acceptable since it is commit-pinned and advanced manually with the image build (already noted in the rule description).

@lexfrei
Aleksei Sviridkin (lexfrei) merged commit ab67dd8 into main Jun 30, 2026
23 of 24 checks passed
@lexfrei
Aleksei Sviridkin (lexfrei) deleted the ci/renovate-conventional-labels branch June 30, 2026 08:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci Issues or PRs related to CI workflows, GitHub Actions, automation area/uncategorized PR auto-labeler could not map title scope to a known area/*; please review automated Created by automation kind/cleanup Categorizes issue or PR as related to cleanup of code, process, or technical debt size/S This PR changes 10-29 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants