Skip to content

Commit 788b33b

Browse files
Simplify Dependabot config with grouping and auto-merge (#167)
- Replace per-package configs with single root config (yarn workspaces) - Group dev dependency minor/patch updates together - Group production minor/patch updates together - Group GitHub Actions updates together - Add auto-merge workflow for dev dependency updates This reduces PR noise from ~20+ individual PRs to ~3-4 grouped PRs, and auto-merges low-risk dev dependency updates after CI passes.
1 parent b958a27 commit 788b33b

2 files changed

Lines changed: 64 additions & 89 deletions

File tree

.github/dependabot.yaml

Lines changed: 26 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,39 @@
11
# Dependabot configuration for openfeature-js-client monorepo
22
# Documentation: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
33
#
4-
# Strategy: Each dependency update creates a separate PR for granular control and review.
4+
# Strategy:
5+
# - Single root config leverages yarn workspaces to update all packages together
6+
# - Grouped updates reduce PR noise (dev deps monthly, prod deps weekly)
7+
# - Dev dependency minor/patch updates are auto-merged via GitHub Actions
58

69
version: 2
710
updates:
8-
# Root workspace dependencies
11+
# NPM dependencies (yarn workspaces handles the monorepo)
912
- package-ecosystem: 'npm'
1013
directory: '/'
1114
schedule:
1215
interval: 'weekly'
1316
day: 'monday'
1417
time: '09:00'
1518
timezone: 'America/New_York'
16-
open-pull-requests-limit: 10
19+
groups:
20+
# Dev dependencies grouped together, monthly updates
21+
dev-dependencies:
22+
dependency-type: 'development'
23+
update-types:
24+
- 'minor'
25+
- 'patch'
26+
# Production minor/patch grouped together
27+
production-minor-patch:
28+
dependency-type: 'production'
29+
update-types:
30+
- 'minor'
31+
- 'patch'
1732
labels:
1833
- 'dependencies'
19-
- 'npm'
20-
- 'root'
2134
commit-message:
22-
prefix: '👷 chore'
23-
prefix-development: '👷 chore'
24-
include: 'scope'
25-
reviewers:
26-
- 'CODEOWNERS'
27-
28-
# Browser package
29-
- package-ecosystem: 'npm'
30-
directory: '/packages/browser'
31-
schedule:
32-
interval: 'weekly'
33-
day: 'monday'
34-
time: '09:00'
35-
timezone: 'America/New_York'
36-
open-pull-requests-limit: 10
37-
labels:
38-
- 'dependencies'
39-
- 'npm'
40-
- 'browser'
41-
commit-message:
42-
prefix: '👷 chore(browser)'
43-
prefix-development: '👷 chore(browser)'
44-
include: 'scope'
45-
reviewers:
46-
- 'CODEOWNERS'
47-
48-
# Core package
49-
- package-ecosystem: 'npm'
50-
directory: '/packages/core'
51-
schedule:
52-
interval: 'weekly'
53-
day: 'monday'
54-
time: '09:00'
55-
timezone: 'America/New_York'
56-
open-pull-requests-limit: 10
57-
labels:
58-
- 'dependencies'
59-
- 'npm'
60-
- 'core'
61-
commit-message:
62-
prefix: '👷 chore(core)'
63-
prefix-development: '👷 chore(core)'
64-
include: 'scope'
65-
reviewers:
66-
- 'CODEOWNERS'
67-
68-
# Node server package
69-
- package-ecosystem: 'npm'
70-
directory: '/packages/node-server'
71-
schedule:
72-
interval: 'weekly'
73-
day: 'monday'
74-
time: '09:00'
75-
timezone: 'America/New_York'
76-
open-pull-requests-limit: 10
77-
labels:
78-
- 'dependencies'
79-
- 'npm'
80-
- 'node-server'
81-
commit-message:
82-
prefix: '👷 chore(node-server)'
83-
prefix-development: '👷 chore(node-server)'
84-
include: 'scope'
85-
reviewers:
86-
- 'CODEOWNERS'
87-
88-
# Test app
89-
- package-ecosystem: 'npm'
90-
directory: '/test-app'
91-
schedule:
92-
interval: 'weekly'
93-
day: 'monday'
94-
time: '09:00'
95-
timezone: 'America/New_York'
96-
open-pull-requests-limit: 10
97-
labels:
98-
- 'dependencies'
99-
- 'npm'
100-
- 'test-app'
101-
commit-message:
102-
prefix: '👷 chore(test-app)'
103-
prefix-development: '👷 chore(test-app)'
35+
prefix: '👷 chore(deps)'
36+
prefix-development: '👷 chore(deps-dev)'
10437
include: 'scope'
10538

10639
# GitHub Actions dependencies
@@ -111,10 +44,14 @@ updates:
11144
day: 'monday'
11245
time: '09:00'
11346
timezone: 'America/New_York'
114-
open-pull-requests-limit: 10
47+
groups:
48+
# Group all GHA updates together
49+
github-actions:
50+
patterns:
51+
- '*'
11552
labels:
11653
- 'dependencies'
11754
- 'github-actions'
11855
commit-message:
119-
prefix: '👷 ci'
56+
prefix: '👷 ci(deps)'
12057
include: 'scope'
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Auto-merge Dependabot PRs for dev dependencies
2+
# Only merges minor/patch updates for development dependencies after CI passes
3+
#
4+
# Requirements:
5+
# - Repository must have "Allow auto-merge" enabled in settings
6+
# - Branch protection rules must require status checks to pass
7+
8+
name: Dependabot Auto-Merge
9+
10+
on:
11+
pull_request:
12+
13+
permissions:
14+
contents: write
15+
pull-requests: write
16+
17+
jobs:
18+
auto-merge:
19+
runs-on: ubuntu-latest
20+
if: github.actor == 'dependabot[bot]'
21+
steps:
22+
- name: Fetch Dependabot metadata
23+
id: metadata
24+
uses: dependabot/fetch-metadata@v2
25+
with:
26+
github-token: '${{ secrets.GITHUB_TOKEN }}'
27+
28+
- name: Auto-merge dev dependency updates
29+
if: >-
30+
steps.metadata.outputs.dependency-type == 'direct:development' &&
31+
(steps.metadata.outputs.update-type == 'version-update:semver-minor' ||
32+
steps.metadata.outputs.update-type == 'version-update:semver-patch')
33+
run: |
34+
gh pr review --approve "$PR_URL"
35+
gh pr merge --auto --squash "$PR_URL"
36+
env:
37+
PR_URL: ${{ github.event.pull_request.html_url }}
38+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)