Skip to content

Auto-merge low-risk Dependabot bumps - #69

Merged
mitchallen merged 1 commit into
mainfrom
ci/dependabot-auto-merge
Aug 5, 2026
Merged

Auto-merge low-risk Dependabot bumps#69
mitchallen merged 1 commit into
mainfrom
ci/dependabot-auto-merge

Conversation

@mitchallen

Copy link
Copy Markdown
Owner

Ports the auto-merge workflow from random-mcp-server.

Scope: all github-actions updates, plus npm/docker minor and patch. Majors always stay manual — and this session showed why: the TypeScript 5.9 → 7.0 bump broke the build outright (TS7016) and the Node 24 → 25 base image was declined for being non-LTS. Both needed a human.

Required settings (already applied)

Auto-merge is only safe if there are required checks for it to wait on. With none, GitHub merges as soon as the PR is mergeable — landing bumps without CI gating them, the opposite of the intent. random-server had allow_auto_merge: false and no branch protection, so both were configured:

Setting Value Why
allow_auto_merge true gh pr merge --auto errors without it
Required checks on main test, docker what auto-merge waits for
enforce_admins false direct version-bump pushes to main still work
Required reviews none a review requirement would stall every Dependabot PR on a solo repo
strict false avoids forced rebase churn

Two deliberate differences from the source

Merges with --merge, not --squash — matches this repo's all-merge-commit history.

Tests npm with startsWith('npm'), not a literal. package-ecosystem is Dependabot's internal identifier, not the friendly name in dependabot.yml: npm reports as npm_and_yarn, Actions as github_actions. Confirmed from a real run log and from the dependabot/<ecosystem>/ branch prefixes.

⚠️ random-mcp-server has this bug today. Its workflow tests == 'pip', but a real run there shows outputs.package-ecosystem: uv — so its Python bumps will never auto-merge. It's gone unnoticed because the only pip PR so far was a major, which was correctly excluded anyway. Happy to fix that separately.

Verification

Condition simulated against this session's actual PRs:

PR Decision
actions group (major) auto-merge
fast-uri (patch) auto-merge
cucumber 12→13 (minor) auto-merge
TypeScript 5.9→7.0 (major, broke build) manual
node 24→25 (major, declined) manual

🤖 Generated with Claude Code

Ports the workflow from random-mcp-server. Scope: all github-actions
updates, plus npm/docker minor + patch. Majors always stay manual, and
this session showed why — the TypeScript 5.9 -> 7.0 bump broke the build
outright (TS7016) and the Node 24 -> 25 base image was declined for being
non-LTS. Both needed a human.

Two deliberate differences from the source workflow:

- Merges with --merge, not --squash, to match this repo's history.
- Tests the npm ecosystem with startsWith('npm') rather than a literal.
  package-ecosystem is Dependabot's internal id, not the friendly name in
  dependabot.yml: npm reports as `npm_and_yarn`. random-mcp-server has
  this bug today — it tests `== 'pip'` while its real output is `uv`, so
  its Python bumps never auto-merge.

Auto-merge is only safe with required checks to wait on, so main is now
protected requiring `test` and `docker`. enforce_admins stays off so
direct version-bump pushes to main still work, and no review is required
(a review requirement would stall every Dependabot PR on a solo repo).

Condition verified against this session's real PRs: actions/fast-uri/
cucumber auto-merge; the TypeScript and Node majors stay manual.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mitchallen
mitchallen merged commit d6775d0 into main Aug 5, 2026
3 checks passed
@mitchallen
mitchallen deleted the ci/dependabot-auto-merge branch August 5, 2026 18:18
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.

1 participant