Replace Dependabot with Renovate and add a stable CI gate - #467
Open
kylehoehns wants to merge 1 commit into
Open
Replace Dependabot with Renovate and add a stable CI gate#467kylehoehns wants to merge 1 commit into
kylehoehns wants to merge 1 commit into
Conversation
Dependabot's config had drifted from the repo layout. The maven entry pointed at /java, which uses build.gradle and has no pom.xml. The two nuget entries pointed at /c-sharp/Check and /c-sharp/Check.Tests, which were renamed to Application and UnitTests. f-sharp, aws-terraform, docker-compose.yml and cpp were never configured at all. Java and C# silently stopped receiving updates when those directories were renamed. Renovate discovers manifests by scanning the repo, so there are no directory paths to go stale. It also covers the four exercises Dependabot was missing. Updates automerge once CI is green, majors included. These exercises are small starter shells rather than real applications, so anything that compiles and passes its tests is good enough to merge unattended. Majors still get their own PR rather than joining the grouped one, so a break stays isolated to the dependency that caused it. Add verify-complete as an aggregate gate job. The verify-job check names include the devcontainer path, so they change whenever a devcontainer is added or removed and can't be required by branch protection by name. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
kylehoehns
force-pushed
the
renovate-migration
branch
from
August 6, 2026 15:33
fe28265 to
c2f052c
Compare
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.
What this does
Swaps Dependabot for Renovate, and adds one new CI job that branch protection can point at.
Why we're switching
Two reasons.
Our Dependabot config was quietly broken. It lists the folders to check by hand, and some of those folders don't exist anymore:
mavenin/javabuild.gradle— there is nopom.xmlin this repo at allnugetin/c-sharp/Checkc-sharp/Applicationnugetin/c-sharp/Check.Testsc-sharp/UnitTestsAnd
f-sharp,aws-terraform,docker-compose.yml, andcppwere never listed at all. So four of our twelve exercises have never gotten a single dependency update, and Java and C# stopped getting them the day those folders were renamed. Nothing failed loudly — Dependabot just skips folders it can't find.You can see it in the PR history. Java has had 1 Dependabot PR ever. C# had 9, all before the rename. Meanwhile typescript-react has had 149.
Renovate finds dependency files by scanning the repo instead of reading a list of folders. So there's no list to go stale, and it picks up the four exercises we were missing. It also spotted that
cppis pinned to googletest 1.14.0, which is about three years old.We want dependency PRs to merge themselves. Dependabot can't do this. It has no auto-merge setting, and in January GitHub removed the
@dependabot mergecomment command that people used as a workaround. Renovate has auto-merge built in, and we already run it onhacker-rank-queue.How it'll work
Renovate opens about one PR a month with all the non-major updates grouped together. If the full devcontainer matrix passes, it merges itself.
Major version bumps get their own separate PR, but those merge themselves too. These exercises are small starter shells, not real applications, so a major bump that still compiles and passes its tests is good enough. Keeping majors in their own PR means that if one does break, it's isolated to the dependency that caused it instead of blocking everything else. A major that needs real code changes will just fail CI and sit there as an open PR, which is a useful signal that an exercise needs attention.
There's a 14-day waiting period before any update can auto-merge. If a package gets compromised, it usually gets pulled well inside two weeks, so this keeps us from auto-merging something bad on day one.
We also stop ignoring patch updates. That made sense when every PR needed someone to click merge. Now that they merge themselves, patches are the safest thing we get.
The new
verify-completejobOur
verify-jobcheck names include the devcontainer path, likeverify-job (.devcontainer/cpp/devcontainer.json). Those names change whenever someone adds or removes a devcontainer, so branch protection can't require them by name — a required check that never runs would block every PR forever.verify-completeis one job with one stable name that passes only if everything else passed. That's what branch protection will require.Still to do after this merges
These are repo settings, not code, so they aren't in this PR:
mainand move to rulesets — the two are additive, and the old rule's "1 approval" has no way to let Renovate throughverify-complete, nobody bypassessourceallies/interviewsto the Renovate GitHub AppHumans still need an approval. Renovate skips that rule but still has to pass CI.
Note on the open PRs
The ~30 open Dependabot PRs can be closed. Renovate will reopen what still matters on its first run, grouped, at current versions.