chore: add Dependabot config for NuGet and GitHub Actions - #14
Merged
Merged
Conversation
This repo pins everything by hand and had no mechanism to move any of it: 47 NuGet packages under Central Package Management, 11 actions pinned to commit SHAs, no dependabot.yml and no Renovate config. Pins without an updater are pins that rot — including security pins. That risk is not hypothetical here. Directory.Packages.props already carries a hand-written transitive pin forcing System.Text.Json off the vulnerable <=8.0.4 line (CVE-2024-43485 / GHSA-8g4q-xg66-9fp4). Someone had to notice that. This automates noticing the next one. Three update streams: nuget / root CPM. All versions live in one Directory.Packages.props, so bumps are edits to that single file. nuget /templates/resq-service the `dotnet new` template ships its own Directory.Packages.props and is restored outside the root tree (see NuGet.config), so the root scan never reaches it. Kept separate because template bumps change what downstream services scaffold with. github-actions / SHA pins. Dependabot updates them in place and rewrites the trailing `# vX.Y.Z` comment, so pins stay pins. Grouping is deliberate. Microsoft.Extensions/EF Core/AspNetCore ship as one versioned wave and fail to restore against each other if split. ResQ.BuildingBlocks.* are this repo's own packages, versioned together off one MinVer tag, so ungrouped they would open eight near-identical template PRs on every release. github/gh-aw-actions* is ignored: it is version-locked to the gh-aw compiler and rewritten into the *.lock.yml files by `gh aw compile`, so a bump here is reverted on the next compile. Verified: config parses as valid YAML v2; every group pattern was matched against the 47 package ids actually present, with zero dead patterns. The `chore` and `deps` labels were created first — a config naming labels that do not exist makes Dependabot refuse to label its PRs, which is exactly what happened in resq-software/docs#117. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Audit Results: PASSThe Dependabot configuration is thorough and correctly targets both the root solution (CPM) and the Minor Observations:
No security vulnerabilities or logic bugs were identified. Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "localhost"See Network Configuration for more information.
|
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.
Every version in this repo is pinned by hand, and nothing was set up to move any of it — 47 NuGet packages under Central Package Management, 11 actions pinned to commit SHAs, no
dependabot.yml, no Renovate config. Pins without an updater are pins that rot, security pins included.That risk is already visible in-tree.
Directory.Packages.propscarries a hand-written transitive pin:Someone had to notice that by hand. This automates noticing the next one.
Three update streams
nuget /Directory.Packages.props, so bumps are edits to a single filenuget /templates/resq-serviceDirectory.Packages.propsand restores outside the root tree (seeNuGet.config), so the root scan never reaches it. Bumps here change what downstream services scaffold with, so they deserve their own reviewgithub-actions /# vX.Y.Zcomment, so pins stay pinsGrouping is deliberate
microsoft—Microsoft.Extensions.*/ EF Core / AspNetCore ship as one versioned wave; split into separate PRs they fail to restore against each other.System.Text.Jsonrides along for the same reason.resq-buildingblocks— these are this repo's own published packages, referenced by the template and versioned together off one MinVer tag. Ungrouped, every release would open eight near-identical template PRs.opentelemetry,testing,analyzers— same-wave families.github/gh-aw-actions*is ignored: it is version-locked to the gh-aw compiler and rewritten into the*.lock.ymlfiles bygh aw compile, so a bump here is reverted on the next compile.Verification
ShouldlyandVerify*are not used here (the repo usesFluentAssertions), so those patterns were removed rather than shipped as dead config.choreanddepslabels were created first. A config naming labels that do not exist makes Dependabot refuse to label its PRs — exactly what happened in chore(deps): bump actions/stale from 10 to 11 in the github-actions group across 1 directory docs#117.Judgment calls worth a look
FluentValidation,Polly.Core,Scrutor,MinVer,Npgsql*,Scalar.AspNetCore, …) and will get individual PRs. That is intentional — they version independently — but the weekly limit of 5 will throttle them.resq-software/docs.