Dependabot Configuration Guide¶
What is Dependabot?¶
Dependabot is GitHub's automated dependency update tool that:
- π Scans your dependencies for updates
- π Checks for security vulnerabilities
- π€ Automatically creates Pull Requests with updates
- π Groups related updates together
Configuration Overview¶
Our Dependabot setup (.github/dependabot.yml) monitors:
1. Python Dependencies (pip)¶
- Schedule: Weekly on Mondays at 09:00 UTC
- File:
requirements.txt - Max PRs: 10 open at once
Grouped Updates:
- Development tools: pytest, black, isort, flake8, mypy
- Documentation: mkdocs, Markdown, Jinja2
- Build tools: pyinstaller, py2app, setuptools
- Security: cryptography, urllib3, requests, certifi (always separate for visibility)
2. npm Dependencies¶
- Schedule: Weekly on Mondays at 09:00 UTC
- File:
package.json - Max PRs: 5 open at once
- All updates grouped together
3. GitHub Actions¶
- Schedule: Weekly on Mondays at 09:00 UTC
- Files:
.github/workflows/*.yml - Max PRs: 5 open at once
- Automatically updates action versions (e.g.,
actions/checkout@v3β@v4)
How It Works¶
1. Automated Detection¶
Every Monday at 9 AM, Dependabot:
- Checks for dependency updates
- Compares with latest versions
- Identifies security vulnerabilities
- Creates PRs for updates
2. Pull Request Creation¶
Each PR includes:
- Title:
chore: bump <dependency> from X.Y.Z to A.B.C - Description: Changelog, commits, release notes
- Labels:
dependencies,python/javascript/github-actions - Compatibility: Passes all CI checks
3. Your Action Required¶
When a PR is created:
- Review the changelog - Check for breaking changes
- Wait for CI - All tests must pass
-
Test locally (optional for major updates):
git fetch origin git checkout dependabot/pip/package-name npm run verify -
Merge - Use "Squash and merge"
Grouping Strategy¶
Why Group Updates?¶
Instead of 10 separate PRs for pytest, pytest-cov, coverage, etc., you get 1 PR with all testing tools updated together.
Benefits:
- β Fewer PRs to review
- β Related updates tested together
- β Cleaner git history
Example Groups:
development-dependencies:
# One PR updates: pytest, black, isort, flake8, mypy
documentation:
# One PR updates: mkdocs, mkdocs-material, Jinja2
build-tools:
# One PR updates: pyinstaller, py2app, setuptools
Security Updates (Always Separate)¶
Security-related packages are never grouped:
- cryptography
- urllib3
- requests
- certifi
This ensures security updates are highly visible and can be merged immediately.
Handling Dependabot PRs¶
β Safe to Auto-Merge¶
- Patch updates (1.2.3 β 1.2.4)
- Development dependencies
- GitHub Actions minor updates
β οΈ Requires Review¶
- Minor updates (1.2.3 β 1.3.0)
- Security updates (read advisory)
- Grouped PRs (test together)
π¨ Requires Testing¶
- Major updates (1.2.3 β 2.0.0)
- Core runtime dependencies (pygame, cryptography)
- Breaking changes mentioned in changelog
Example Workflow¶
# 1. Dependabot creates PR "chore: bump pytest from 8.4.1 to 8.5.0"
# 2. CI runs automatically (tests, lint, typecheck)
# 3. Review changelog on PR
# 4. If all green and no breaking changes β Merge
# 5. If unsure, test locally:
git fetch origin
git checkout dependabot/pip/pytest
npm run verify
Ignored Updates¶
We ignore major version updates for:
- pygame: Breaking changes in major versions
- python: Requires manual testing
To change this, edit .github/dependabot.yml:
ignore:
- dependency-name: 'pygame'
update-types: ['version-update:semver-major']
Customization¶
Change Schedule¶
schedule:
interval: 'daily' # daily, weekly, monthly
day: 'monday' # For weekly
time: '09:00' # UTC
Change PR Limit¶
open-pull-requests-limit: 20 # Default is 5
Disable a Package Ecosystem¶
Comment out the ecosystem section:
# - package-ecosystem: "npm" # Disabled
Troubleshooting¶
"Too many open PRs"¶
Increase the limit or merge/close existing PRs:
open-pull-requests-limit: 15
"Update failed"¶
Common causes:
- Dependency conflict (check error in PR)
- Package not found (deprecated/renamed)
- Version constraint in requirements.txt too strict
Fix: Update requirements.txt manually or close the PR.
"Security update not created"¶
Check:
- Is the package in your
requirements.txt? - Is it in an
ignorerule? - Check GitHub Security Advisories tab
Best Practices¶
β Do¶
- Review PRs weekly
- Merge security updates quickly
- Keep open PR count low
- Test major updates locally
- Read changelogs for breaking changes
β Don't¶
- Ignore security updates
- Let PRs accumulate
- Auto-merge without CI passing
- Skip testing major version bumps
- Disable Dependabot without good reason
Monitoring¶
View Dependabot Activity¶
- Go to Insights β Dependency graph β Dependabot
- See all open/closed PRs
- Check update frequency
- View security alerts
GitHub Notifications¶
Configure in GitHub Settings:
- Watch β Custom β Dependabot alerts
Integration with Our Security Workflow¶
Dependabot works alongside:
-
Security Audit Workflow (
.github/workflows/security-audit.yml)- Runs weekly
- Scans with
pip-audit - Creates vulnerability reports
-
Manual Commands:
npm run security:audit # Check vulnerabilities npm run deps:outdated # List outdated packages
Flow:
Security Audit detects CVE
β
Dependabot creates PR with fix
β
CI runs automatically
β
You review and merge
β
Next audit shows "No vulnerabilities"
Resources¶
Last Updated: January 15, 2026