Skip to content

chore(ci): replace dependabot with renovate - #42

Merged
ThePrismSystem merged 3 commits into
mainfrom
chore/switch-to-renovate
Aug 6, 2026
Merged

chore(ci): replace dependabot with renovate#42
ThePrismSystem merged 3 commits into
mainfrom
chore/switch-to-renovate

Conversation

@ThePrismSystem

Copy link
Copy Markdown
Owner

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.json was committed back in
051bb2f and produced zero PRs across the whole history — no onboarding PR, no dashboard
issue, no renovate/* branches — because the GitHub App was never installed. That install
is 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 it
    and CI reads it back out with sed; check:pins exists because a second pin once shipped
    an older binary than CI tested. No built-in manager covers an ARG, so a custom manager
    watches it against the go datasource — the same thing scripts/build-beans.sh installs.
    Verified: the pattern matches v0.4.2 and nothing else in the file, and all three of
    releases/tags/proxy.golang.org resolve it.
  • The Node floor, stated in .nvmrc, engines.node and two Dockerfile stages. These have
    drifted before — the README badge still read >=22 after the bump to 24, which the audit
    caught. Grouped into one PR.
  • Volume. 37 dependencies across four manifests, one PR each, is what produced 10
    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:

  • Actions are not automerged. They aren't dev dependencies and they run with a token, so a
    compromised one is a credential problem rather than a build problem.
  • minimumReleaseAge: 3 days on automerged updates. Automerge plus a fresh publish is the
    window 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.

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
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

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

@ThePrismSystem
ThePrismSystem disabled auto-merge August 6, 2026 17:04
@ThePrismSystem
ThePrismSystem merged commit 2ebc1e5 into main Aug 6, 2026
1 check passed
@ThePrismSystem
ThePrismSystem deleted the chore/switch-to-renovate branch August 6, 2026 17:04
@github-advanced-security

Copy link
Copy Markdown

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:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants