Skip to content

Commit ebb13dd

Browse files
committed
fix(dependabot): Ensure dependabot updates NuGet packages across all projects in single PR
1 parent ba941af commit ebb13dd

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
id: TASK-10
3+
title: Ensure dependabot updates NuGet packages across all projects in a single PR
4+
status: To Do
5+
assignee:
6+
- piotrzajac
7+
- claude
8+
created_date: '2026-04-12 16:33'
9+
updated_date: '2026-04-12 17:33'
10+
labels:
11+
- fix
12+
- ci-cd
13+
dependencies: []
14+
priority: medium
15+
---
16+
17+
## Description
18+
19+
<!-- SECTION:DESCRIPTION:BEGIN -->
20+
Dependabot was only updating ungrouped packages (e.g. Microsoft.NET.Test.Sdk, Castle.Core) in a single project per run instead of all projects simultaneously. This triggered a recurring pattern: Dependabot bumps one project, then a manual "Align versions in all projects" commit is needed.
21+
22+
Root cause: `directories: ["**/*"]` creates one PR per matched directory per ungrouped package. Packages already covered by a group (xUnit, AutoFixture, Analyzers) correctly produced one cross-directory PR. Ungrouped shared packages were not consolidated:
23+
24+
| Package | Projects | Effect |
25+
| --- | --- | --- |
26+
| JetBrains.Annotations | 8 | 8 separate PRs |
27+
| Microsoft.NETFramework.ReferenceAssemblies | 8 | 8 separate PRs |
28+
| Castle.Core | 7 | 7 separate PRs |
29+
| Microsoft.NET.Test.Sdk | 4 | 4 separate PRs |
30+
| coverlet.msbuild | 4 | 4 separate PRs |
31+
| Microsoft.SourceLink.GitHub | 4 | 4 separate PRs |
32+
33+
With Dependabot's default open-pull-requests-limit of 5, only some directories would receive a PR for a given package before the limit was reached — explaining why only AutoFakeItEasy.Tests was updated for Microsoft.NET.Test.Sdk 18.4.0.
34+
35+
Evidence from git log and closed PR history:
36+
37+
- ecee204 Bump Microsoft.NET.Test.Sdk from 18.3.0 to 18.4.0 (only AutoFakeItEasy.Tests)
38+
- 23b7f3b fix(dependabot): Align versions in all projects (manual follow-up)
39+
- Castle.Core 5.2.1 generated 6 separate per-directory PRs
40+
41+
Fix: Keep `directories: ["**/*"]` (discovery is working correctly) and add three new dependency groups under the nuget ecosystem entry:
42+
43+
- Testing: Microsoft.NET.Test.Sdk, coverlet.msbuild
44+
- Common: Castle.Core, JetBrains.Annotations, Microsoft.SourceLink.GitHub, Microsoft.NETFramework.ReferenceAssemblies
45+
- Other: `*` catch-all — consolidates any package not matched by a named group into a single PR, guarding against future ungrouped shared packages
46+
<!-- SECTION:DESCRIPTION:END -->
47+
48+
## Acceptance Criteria
49+
<!-- AC:BEGIN -->
50+
- [ ] #1 xUnit, AutoFixture, Analyzers, Testing, Common, and Other groups each produce a single cross-directory PR
51+
- [ ] #2 No more manual 'Align versions in all projects' follow-up commits are needed
52+
- [ ] #3 `directories: ["**/*"]` is preserved (discovery was already working correctly)
53+
<!-- AC:END -->
54+
55+
## Implementation Plan
56+
57+
<!-- SECTION:PLAN:BEGIN -->
58+
In .github/dependabot.yml, add three groups under the nuget ecosystem entry (order matters — Other must be last so named groups take priority):
59+
60+
Testing:
61+
patterns:
62+
- "Microsoft.NET.Test.Sdk"
63+
- "coverlet.msbuild"
64+
Common:
65+
patterns:
66+
- "Castle.Core"
67+
- "JetBrains.Annotations"
68+
- "Microsoft.SourceLink.GitHub"
69+
- "Microsoft.NETFramework.ReferenceAssemblies"
70+
Other:
71+
patterns:
72+
- "*"
73+
74+
The change is already applied to the working tree (not yet committed). Review and commit when ready.
75+
<!-- SECTION:PLAN:END -->

.github/dependabot.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,19 @@ updates:
2424
- "*analyzer*"
2525
exclude-patterns:
2626
- "xunit.analyzers"
27+
Testing:
28+
patterns:
29+
- "Microsoft.NET.Test.Sdk"
30+
- "coverlet.msbuild"
31+
Common:
32+
patterns:
33+
- "Castle.Core"
34+
- "JetBrains.Annotations"
35+
- "Microsoft.SourceLink.GitHub"
36+
- "Microsoft.NETFramework.ReferenceAssemblies"
37+
Other:
38+
patterns:
39+
- "*"
2740
ignore:
2841
- dependency-name: "Moq"
2942
- package-ecosystem: "github-actions"

0 commit comments

Comments
 (0)