Skip to content

renovate: Disable major/minor k8s upgrades on stable branches#44489

Merged
aanm merged 1 commit intomainfrom
pr/HadrienPatte/renovate-k8s
Feb 23, 2026
Merged

renovate: Disable major/minor k8s upgrades on stable branches#44489
aanm merged 1 commit intomainfrom
pr/HadrienPatte/renovate-k8s

Conversation

@HadrienPatte
Copy link
Copy Markdown
Member

@HadrienPatte HadrienPatte commented Feb 22, 2026

PR #44389 introduced the "matchBaseBranches": ["main"] constraint to the "disable major/minor k8s updates" rule. The intent was to scope that rule to main since stable branches would have their own logic, but the new "k8s.io patch updates stable" rule only covers patch/digest — it never disables major/minor on stable. So major/minor k8s update fell through with nothing blocking them on v1.17/v1.18/v1.19.

That's how we got #44481 attempting to bump those from v0.32.0 to v0.35.1 on 1.17 and #44476 from v0.33.3 to v0.35.1 on 1.18.

This PR removes the matchBaseBranches: ["main"] from the disable rule so it applies to all branches. The "k8s.io patch updates stable" rule (which explicitly enables patch+digest on stable) will still take precedence for those update types, giving the correct behavior:

  • All branches: major/minor k8s updates disabled
  • Stable branches only: patch/digest k8s updates enabled

PR #44389 introduced the `"matchBaseBranches": ["main"]` constraint to the `"disable major/minor k8s updates"` rule. The intent was to scope that rule to main since stable branches would have their own logic, but the new `"k8s.io patch updates stable"` rule only covers patch/digest — it never disables major/minor on stable. So major/minor k8s update fell through with nothing blocking them on v1.17/v1.18/v1.19.

That's how we got #44481 attempting to bump those from `v0.32.0` to `v0.35.1` on 1.17 and #44476 from `v0.33.3` to `v0.35.1` on 1.18.

This PR removes the `matchBaseBranches: ["main"]` from the disable rule so it applies t all branches. The `"k8s.io patch updates stable"` rule (which explicitly enables patch+digest on stable) will still take precedence for those update types, giving the correct behavior:
* All branches: major/minor k8s updates disabled
* Stable branches only: patch/digest k8s updates enabled

Signed-off-by: Hadrien Patte <[email protected]>
@maintainer-s-little-helper maintainer-s-little-helper bot added the dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. label Feb 22, 2026
@HadrienPatte
Copy link
Copy Markdown
Member Author

/test

@HadrienPatte HadrienPatte marked this pull request as ready for review February 22, 2026 13:59
@HadrienPatte HadrienPatte requested review from a team as code owners February 22, 2026 13:59
@HadrienPatte HadrienPatte requested review from aanm and brlbil February 22, 2026 13:59
@HadrienPatte HadrienPatte added the release-note/misc This PR makes changes that have no direct user impact. label Feb 22, 2026
@maintainer-s-little-helper maintainer-s-little-helper bot removed the dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. label Feb 22, 2026
Copy link
Copy Markdown
Member

@aanm aanm left a comment

Choose a reason for hiding this comment

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

oh, how did I mess this up! Thanks for the fix!

@aanm aanm added this pull request to the merge queue Feb 23, 2026
Merged via the queue into main with commit 8ca8a86 Feb 23, 2026
88 checks passed
@aanm aanm deleted the pr/HadrienPatte/renovate-k8s branch February 23, 2026 08:41
@aanm
Copy link
Copy Markdown
Member

aanm commented Feb 23, 2026

@HadrienPatte and now back to square 1 because renovate does not update the patch versions of the k8s libraries on stable branches. 😢

HadrienPatte added a commit that referenced this pull request Feb 23, 2026
The `"k8s.io patch updates stable"` rule was missing `separateMinorPatch: true`. With the global `separateMinorPatch: false`, Renovate produces a single PR targeting the latest version when a newer minor is available. That PR is classified as "minor", so `matchUpdateTypes: ["patch"]` never matches, `enabled: true` never fires, and the `"k8s major/minor updates disabled"` rule blocks it — no patch PR is ever created.

Add `separateMajorMinor: true` and `separateMinorPatch: true` to the rule, matching the pattern already used for lvh-images and external docker images on stable branches. This forces a separate "patch"-typed PR (staying within the current minor series) which the rule can correctly enable, while the "minor"-typed PR remains blocked as intended.

Followup to #44489

Signed-off-by: Hadrien Patte <[email protected]>
HadrienPatte added a commit that referenced this pull request Feb 23, 2026
The `"k8s.io patch updates stable"` rule was missing `separateMinorPatch: true`. With the global `separateMinorPatch: false`, Renovate produces a single PR targeting the latest version when a newer minor is available. That PR is classified as "minor", so `matchUpdateTypes: ["patch"]` never matches, `enabled: true` never fires, and the `"k8s major/minor updates disabled"` rule blocks it — no patch PR is ever created.

Add `separateMajorMinor: true` and `separateMinorPatch: true` to the rule, matching the pattern already used for lvh-images and external docker images on stable branches. This forces a separate "patch"-typed PR (staying within the current minor series) which the rule can correctly enable, while the "minor"-typed PR remains blocked as intended.

Followup to #44489

Signed-off-by: Hadrien Patte <[email protected]>
@HadrienPatte
Copy link
Copy Markdown
Member Author

@HadrienPatte and now back to square 1 because renovate does not update the patch versions of the k8s libraries on stable branches. 😢

Alright, new try: #44498 @aanm

HadrienPatte added a commit that referenced this pull request Feb 23, 2026
The `"k8s.io patch updates stable"` rule was missing `separateMinorPatch: true`. With the global `separateMinorPatch: false`, Renovate produces a single PR targeting the latest version when a newer minor is available. That PR is classified as "minor", so `matchUpdateTypes: ["patch"]` never matches, `enabled: true` never fires, and the `"k8s major/minor updates disabled"` rule blocks it — no patch PR is ever created.

Add `separateMajorMinor: true` and `separateMinorPatch: true` to the rule, matching the pattern already used for lvh-images and external docker images on stable branches. This forces a separate "patch"-typed PR (staying within the current minor series) which the rule can correctly enable, while the "minor"-typed PR remains blocked as intended.

Followup to #44489

Signed-off-by: Hadrien Patte <[email protected]>
github-merge-queue bot pushed a commit that referenced this pull request Feb 23, 2026
The `"k8s.io patch updates stable"` rule was missing `separateMinorPatch: true`. With the global `separateMinorPatch: false`, Renovate produces a single PR targeting the latest version when a newer minor is available. That PR is classified as "minor", so `matchUpdateTypes: ["patch"]` never matches, `enabled: true` never fires, and the `"k8s major/minor updates disabled"` rule blocks it — no patch PR is ever created.

Add `separateMajorMinor: true` and `separateMinorPatch: true` to the rule, matching the pattern already used for lvh-images and external docker images on stable branches. This forces a separate "patch"-typed PR (staying within the current minor series) which the rule can correctly enable, while the "minor"-typed PR remains blocked as intended.

Followup to #44489

Signed-off-by: Hadrien Patte <[email protected]>
fzu-huang pushed a commit to fzu-huang/cilium that referenced this pull request Feb 25, 2026
The `"k8s.io patch updates stable"` rule was missing `separateMinorPatch: true`. With the global `separateMinorPatch: false`, Renovate produces a single PR targeting the latest version when a newer minor is available. That PR is classified as "minor", so `matchUpdateTypes: ["patch"]` never matches, `enabled: true` never fires, and the `"k8s major/minor updates disabled"` rule blocks it — no patch PR is ever created.

Add `separateMajorMinor: true` and `separateMinorPatch: true` to the rule, matching the pattern already used for lvh-images and external docker images on stable branches. This forces a separate "patch"-typed PR (staying within the current minor series) which the rule can correctly enable, while the "minor"-typed PR remains blocked as intended.

Followup to cilium#44489

Signed-off-by: Hadrien Patte <[email protected]>
javiercardona-work pushed a commit to javiercardona-work/cilium that referenced this pull request Mar 18, 2026
The `"k8s.io patch updates stable"` rule was missing `separateMinorPatch: true`. With the global `separateMinorPatch: false`, Renovate produces a single PR targeting the latest version when a newer minor is available. That PR is classified as "minor", so `matchUpdateTypes: ["patch"]` never matches, `enabled: true` never fires, and the `"k8s major/minor updates disabled"` rule blocks it — no patch PR is ever created.

Add `separateMajorMinor: true` and `separateMinorPatch: true` to the rule, matching the pattern already used for lvh-images and external docker images on stable branches. This forces a separate "patch"-typed PR (staying within the current minor series) which the rule can correctly enable, while the "minor"-typed PR remains blocked as intended.

Followup to cilium#44489

Signed-off-by: Hadrien Patte <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-note/misc This PR makes changes that have no direct user impact.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants