chore(ci): replace dependabot with renovate - #42
Merged
Conversation
Renovate now covers security updates too, so GitHub's automated security fixes are switched off to stop the two opening duplicate PRs for one CVE. Dependabot ALERTS stay on - Renovate reads them to learn what is vulnerable. Three things Dependabot could not reach: ARG BEANS_VERSION in the Dockerfile is the only pin for the beans binary, and no built-in manager covers an ARG. A custom manager watches it against the go datasource, which is the same thing scripts/build-beans.sh installs. The Node floor is stated in .nvmrc, engines.node and two Dockerfile stages. Those have drifted before - the README badge still read >=22 after the bump to 24 - so they are grouped into one PR. Non-major dev dependencies arrive as a single weekly PR instead of one per package, which is what 37 dependencies across four manifests was producing. Dev dependencies automerge once the nine required checks pass; runtime dependencies, actions and the beans pin never do. Automerged updates wait three days after publication, which is the window an account takeover has to get a malicious release merged unread.
ThePrismSystem
enabled auto-merge (squash)
August 6, 2026 16:22
A fork pull request executes its own code here - pnpm install with whatever package.json it carries, pnpm test, and docker build - and on a self-hosted runner that is arbitrary code on the LAN, beside a beans-web instance with no authentication. Anyone can open a fork PR; pushing a branch to this repo takes write access, and that is the whole of the trust boundary. Each job repeats the expression because Actions does not expand YAML anchors. On a push to main the pull_request context is absent and the expression falls through to self-hosted, which is what we want for a ref that is already merged.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
ThePrismSystem
disabled auto-merge
August 6, 2026 17:04
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
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.
Renovate takes over version and security updates. GitHub's automated security fixes are
switched off so the two don't open duplicate PRs for one CVE; Dependabot alerts stay on,
because Renovate reads them to learn what is vulnerable.
Note this repo never actually ran Renovate before. A
renovate.jsonwas committed back in051bb2fand produced zero PRs across the whole history — no onboarding PR, no dashboardissue, no
renovate/*branches — because the GitHub App was never installed. That installis still the missing step and only you can do it: https://github.com/apps/renovate, scoped
to
beans-web. This config does nothing until then.What Dependabot could not reach
ARG BEANS_VERSION— the only pin for the beans binary. The Dockerfile builds from itand CI reads it back out with
sed;check:pinsexists because a second pin once shippedan older binary than CI tested. No built-in manager covers an
ARG, so a custom managerwatches it against the
godatasource — the same thingscripts/build-beans.shinstalls.Verified: the pattern matches
v0.4.2and nothing else in the file, and all three ofreleases/tags/proxy.golang.org resolve it.
.nvmrc,engines.nodeand two Dockerfile stages. These havedrifted before — the README badge still read
>=22after the bump to 24, which the auditcaught. Grouped into one PR.
Dependabot PRs in a short window. Non-major dev dependencies now arrive as one weekly PR.
Automerge
Dev dependencies automerge once the nine required checks pass — via GitHub's native
auto-merge, so the ruleset is the gate rather than Renovate's own judgement. Runtime
dependencies, GitHub Actions and the beans pin never automerge.
Two judgement calls worth your veto:
compromised one is a credential problem rather than a build problem.
minimumReleaseAge: 3 dayson automerged updates. Automerge plus a fresh publish is thewindow an npm account takeover needs to get a malicious release merged unread. Drop it if
you'd rather have the updates sooner.
Majors are automerged too, per "dev deps only" — but individually rather than in the group,
since a group is only as mergeable as its worst member.
Config validates against
renovate-schema.json. Local gate green: format, lint, knip,check:pins, spell.