chore(renovate): group controller-runtime with k8s modules#317
chore(renovate): group controller-runtime with k8s modules#317Matthiator wants to merge 4 commits into
Conversation
| "description": "Group sigs.k8s.io go modules except controller-runtime (minor and patch)", | ||
| "matchManagers": ["gomod"], | ||
| "matchPackagePrefixes": ["sigs.k8s.io/"], | ||
| "matchPackageNames": ["sigs.k8s.io/**", "!sigs.k8s.io/controller-runtime"], |
There was a problem hiding this comment.
Mhhh does this really make sense 🤔
Won't this lead to a version drift in the longterm? Why wasn't this caught in CI?
There was a problem hiding this comment.
Good point. I checked Renovate upstream as well. Renovate now has built-in Kubernetes monorepo presets (monorepo:kubernetes / group:kubernetesMonorepo), introduced via renovatebot/renovate#41171 and consolidated/renamed via renovatebot/renovate#41454.
That preset is generated from the kubernetes/kubernetes staging repos, so it intentionally covers k8s.io/* modules only. sigs.k8s.io/controller-runtime is not included by design, although it still follows the controller-runtime / client-go compatibility matrix.
So this is not really a Renovate bug; it is a gap between Renovate’s Kubernetes monorepo definition and controller-runtime’s compatibility relationship. We hit that in #311, where the k8s.io/* update needed controller-runtime to move with it.
CI did not catch this because our checks validate build/tests, not the upstream support matrix; an unsupported pair can still compile.
I’ll revise our first approach and switch this to an explicit override instead, so the generic sigs.k8s.io group stays intact while the controller-runtime exception is visible. Commit follows.
📝 Summary
Adds an explicit Renovate override for
sigs.k8s.io/controller-runtimeso it uses the existingk8s.ioGo module group while keeping the genericsigs.k8s.iogroup unchanged.controller-runtimeneeds to stay aligned with Kubernetes/client-go minor versions. This avoids broken Renovate PRs like #311 wherek8s.io/*was updated without the compatiblecontroller-runtimeversion.🧩 Type of change
🧪 Testing
No runtime tests were run because this is a Renovate configuration-only change. The config file was validated as JSON with
jq empty renovate.json.🔗 Related Issues / Tickets
Related to #311
✅ Checklist
📎 Additional Context (optional)
Renovate's built-in Kubernetes monorepo preset covers the
kubernetes/kubernetesstaging repositories (k8s.io/*) but does not includesigs.k8s.io/controller-runtime. The preset was introduced in renovatebot/renovate#41171 and consolidated in renovatebot/renovate#41454.controller-runtimeis still tied to the Kubernetes/client-go compatibility matrix: https://github.com/kubernetes-sigs/controller-runtime#compatibility