ADR 0024: Renovate, not Dependabot, for dependency updates
Context
After the repository went public, Dependabot (.github/dependabot.yml) opened 15 pull requests at once, several of which made no sense for this repository: TypeScript 7 (Angular and @nestjs/cli need TypeScript 6, ADR 0002), Node 26 in the Dockerfiles (24 is the LTS of this repository), and one pull request per package for Actions and tools that belong together. Dependabot can group and ignore, but it cannot tie packages together by rule, hold a major back for good, or show a dashboard. The sibling project ariadne already runs Renovate with a configuration made for the same stack (Angular, pnpm, SHA-pinned Actions).
Decision
- Renovate (
.github/renovate.json5) replaces Dependabot for npm, NuGet, the Dockerfiles and GitHub Actions. It is run from a workflow (renovate.yml, Mondays, or by hand with a dry-run option), like ariadne's, with the repository secretRENOVATE_TOKEN(pull requests opened with the defaultGITHUB_TOKENdo not start CI).renovate-config.ymlvalidates the configuration in a pull request. - Groups that move together: Angular with TypeScript and
zone.js, NestJS, Excalidraw with React, build and test tooling, types, NuGet, GitHub Actions. A major update is a pull request of its own with the labelmajor; nothing is merged automatically. - Rules that encode decisions:
typescriptstays below 7, and the Dockernodeimage below 25 until somebody changes the rule on purpose. The sharedGravionLabs/ciactions followmainand are not touched. Actions stay pinned to a commit SHA, with the version in a comment. - Commits are
chore(deps): ..., whichcliff.tomlleaves out of the release notes. A known vulnerability gets a pull request at once, outside the schedule (osvVulnerabilityAlerts), labelledsecurity. - One Dependency Dashboard issue lists what is waiting.
Consequences
- Fewer, grouped pull requests on a schedule, and the decisions about TypeScript and Node are written down where the updates are made.
- The setup needs a secret that only the owner can add (
RENOVATE_TOKEN, a personal access token withrepoandworkflowscope, or a Renovate app installation instead). Until it is set the workflow fails and nothing is updated; the failure is visible in Actions. - GitHub's own Dependabot alerts (and security updates, if switched on in the settings) are separate from
dependabot.ymland may still open a pull request for a vulnerability; switch security updates off in the repository settings if Renovate'ssecuritypull requests are enough.