Skip to content

Commit 9107082

Browse files
committed
docs: comprehensive auto-merge troubleshooting guide
Add extensive documentation for dependency auto-merge configuration and troubleshooting based on real-world issues encountered: SKILL.md: - Add quick reference troubleshooting table - Add branch protection commands for auto-merge - Add recommended Renovate config example dependency-management.md: - Document Renovate platformAutomerge vs workflow auto-merge - Explain bypass permissions and who enables auto-merge matters - Add branch protection check name matching (matrix jobs) - Document require_code_owner_reviews blocking auto-merge - Add lock file maintenance via Renovate (not CI push) - Document GitHub skipping push events on rapid merges - Add workflow_dispatch for manual triggers - Add merge strategy requirements (required_linear_history) - Comprehensive troubleshooting section - Update Dependabot vs Renovate comparison Key learnings: - Check names must match exactly (job vs job (variant)) - require_code_owner_reviews blocks auto-merge even with bypass - Renovate platformAutomerge uses bypass; workflow doesn't - CI cannot push to protected branches; use lockFileMaintenance
1 parent 2ed4ab5 commit 9107082

2 files changed

Lines changed: 301 additions & 72 deletions

File tree

skills/github-project/SKILL.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ When migrating from master to main branch, consult `references/branch-migration.
2828

2929
When configuring automated dependency updates, consult `references/dependency-management.md` for Dependabot and Renovate configuration patterns, auto-merge workflows, and update strategies.
3030

31+
When troubleshooting why auto-merge isn't working, consult `references/dependency-management.md` for common issues like check name mismatches, code owner review conflicts, and bypass permission problems.
32+
3133
### GitHub Features
3234

3335
When working with sub-issues, consult `references/sub-issues.md` for GraphQL API usage, parent-child relationships, and issue hierarchy patterns.
@@ -287,6 +289,68 @@ gh pr merge <number> --merge
287289

288290
**Important:** When enabling auto-merge, select "Create a merge commit" strategy.
289291

292+
## Auto-merge Troubleshooting Quick Reference
293+
294+
When dependency PRs aren't auto-merging, check these common issues:
295+
296+
| Symptom | Cause | Fix |
297+
|---------|-------|-----|
298+
| PR BLOCKED, checks pass | Check names don't match | Update branch protection to use exact names (e.g., `job (variant)` not `job`) |
299+
| PR BLOCKED, `reviewDecision: REVIEW_REQUIRED` | `require_code_owner_reviews: true` | Disable code owner reviews or add code owner approval |
300+
| Renovate PR not using bypass | Workflow racing with Renovate | Only approve in workflow; let Renovate enable auto-merge via `platformAutomerge` |
301+
| CI can't push to main | Branch protection blocks direct push | Use Renovate `lockFileMaintenance` instead |
302+
| Workflow not triggering | Rapid merges skip push events | Add `workflow_dispatch` trigger, run manually |
303+
| "Merge method X not allowed" | Wrong merge strategy | Check `required_linear_history`; use `--rebase` if true |
304+
305+
### Branch Protection for Auto-merge
306+
307+
```bash
308+
# Check required checks vs actual check names
309+
gh api repos/OWNER/REPO/branches/main/protection/required_status_checks --jq '.checks[].context'
310+
311+
# Check code owner requirement (should be false for auto-merge)
312+
gh api repos/OWNER/REPO/branches/main/protection/required_pull_request_reviews --jq '.require_code_owner_reviews'
313+
314+
# Check bypass apps
315+
gh api repos/OWNER/REPO/branches/main/protection/required_pull_request_reviews --jq '.bypass_pull_request_allowances.apps[].slug'
316+
317+
# Fix: Disable code owner reviews, add bypass apps
318+
gh api repos/OWNER/REPO/branches/main/protection/required_pull_request_reviews -X PATCH \
319+
--input - << 'EOF'
320+
{
321+
"require_code_owner_reviews": false,
322+
"required_approving_review_count": 1,
323+
"bypass_pull_request_allowances": {
324+
"apps": ["dependabot", "renovate"]
325+
}
326+
}
327+
EOF
328+
```
329+
330+
### Recommended Renovate Config for Auto-merge
331+
332+
```json
333+
{
334+
"extends": ["config:recommended"],
335+
"automergeType": "pr",
336+
"platformAutomerge": true,
337+
"lockFileMaintenance": {
338+
"enabled": true,
339+
"schedule": ["before 6am on monday"]
340+
},
341+
"packageRules": [
342+
{
343+
"matchUpdateTypes": ["patch", "minor", "pin", "digest"],
344+
"automerge": true
345+
}
346+
]
347+
}
348+
```
349+
350+
**Key settings:**
351+
- `platformAutomerge: true` - Renovate enables auto-merge (uses bypass permissions)
352+
- `lockFileMaintenance` - Handles lock file updates via PR (not direct push)
353+
290354
## CodeQL Configuration (MANDATORY)
291355

292356
Netresearch projects use custom CodeQL workflows (`.github/workflows/codeql.yml`). GitHub's "Default Setup" **MUST be disabled** - they cannot coexist.

0 commit comments

Comments
 (0)