Repository navigation
Use Renovate groups with group:monorepos and group:recommended - #6067
Merged
Merged
Conversation
Instead, replace it with the default managed renovate extends.
johnsimons
marked this pull request as ready for review
October 30, 2026 02:47
rbev
approved these changes
Oct 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
With this change, Renovate opens one pull request for all packages that ship from the same source repository. The
group:monorepospreset covers the four hand-written NuGet groups that this change removes from.github/renovate.json5.We decided to give this a go, if it does not work out, we can roll it back. Otherwise, if it works well, we can consider it for wider adoption.
Why
Every push to a Renovate branch runs the full CI workflow: 34 jobs and about two hours of runner time. From 30 Sep to 30 Oct, 146 of the 487
ci.ymlruns (30%) were on Renovate branches. These jobs share the organization's limit of 60 concurrent jobs with every other Particular repository, so they delay CI for pull requests that change code.Many of these pull requests update packages that release together. Today the four Testcontainers packages get four pull requests and the three Azure SDK packages get three, and each one runs CI and needs a review and a merge.
The hand-written rules cover only the packages someone has added to them. The Aspire rule (#5993) was added on 13 Oct, after the 13.6.1 release had opened five separate pull requests (#5954 to #5958).
group:monoreposhas had an Aspire group since July 2024. The preset matches packages by the source repository in their NuGet metadata, and Renovate's maintainers keep the list of repositories, so a new package from a listed repository joins its group without a change here.Effect
A Renovate dry run against master plans 23 branches with this change and 27 without it:
renovate/testcontainers-dotnet-monoreporenovate/azure-azure-sdk-for-net-monoreporenovate/open-telemetryrenovate/opentelemetry-dotnet-monoreporenovate/open-telemetryrenovate/opentelemetry-dotnet-contrib-monorepoOpenTelemetry now arrives as two pull requests. The instrumentation packages ship from
opentelemetry-dotnet-contriband the other packages fromopentelemetry-dotnet.The organization config in
Particular/shared-workflowsstill defines a.NET Packagesgroup. Renovate applies the repository rules after the organization rules, so thedotnet monorepogroup wins for packages fromdotnet/dotnetanddotnet/extensions. In the dry run,renovate/dotnet-monoreporeplacesrenovate/dotnet-packageswith the same packages.group:recommendedhas no NuGet groups. The only rule in it that applies to this repository groups major updates ofactions/upload-artifactandactions/download-artifact.The version pins for
Microsoft.Extensions.DependencyModelandSystem.Management.AutomationinServiceControl.Management.PowerShellstay as they are.After this merges, Renovate closes the open pull requests on the old branch names and opens the grouped ones.