Repository navigation
ci(deps): rebase Go module Dependabot PRs only on request - #7822
Conversation
Nearly every Go module bump edits go.mod and go.sum, so merging one leaves every other open Go module pull request conflicting. Dependabot's default rebase strategy then rebases all of them at once, and each rebase re-runs the whole CI. That includes the standing upgrades parked behind an upstream release, which can never merge however often they are rebased. Set rebase-strategy: disabled on the root gomod entry, so a pull request is rebased only when someone comments `@dependabot rebase` on it, and add a dependency contract that fails if the setting is dropped. The KSail maintenance notes say when to ask for the rebase. Part of #7579 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅MegaLinter analysis: Success✅ Linters with no issuesactionlint, bash-exec, git_diff, hadolint, jscpd, jsonlint, lychee, markdown-table-formatter, markdownlint, prettier, prettier, shellcheck, shfmt, stylelint, syft, trivy-sbom, trufflehog, v8r, v8r, yamllint See detailed reports in MegaLinter artifacts
|
@coderabbitai review |
|
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 37 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Code coverage overviewLanguages: Go Go / code-coverage/go
View coverage of the 5 most impacted files.
ℹ️ Calculations represent line coverage. Results may change as calculations are updated. |
devantler
left a comment
There was a problem hiding this comment.
🤖 Generated by the Agentic Engineer (interactive Claude Code session)
Self-review (fallback — CodeRabbit, Codex and Cursor Bugbot unavailable)
Reviewed commit: 51408f82f5af6621e3530f88d9b369584bbe8703
- CodeRabbit: rate limited at this head — command reply 6230288024 ("Review rate limited", 05:40:32Z) and summary 6230288768 ("Review limit reached", 05:40:38Z) answering this PR's request 6230286961; recovers when the free OSS review limit resets.
- Codex: usage limit reached — reply 6230189816 on ksail#7823 (05:29:03Z); the limit is account-wide and recovers at its weekly reset.
- Cursor Bugbot: usage limit reached — reply 6230200017 on ksail#7823 (05:30:20Z); the limit is account-wide and recovers when the usage limit resets.
Scope read: every changed line — the root gomod entry's new rebase-strategy, the dependency contract and its fixtures, the shared Dependabot entry type, and the maintenance note. Checked: rebase-strategy with the value disabled is a key Dependabot accepts on an update entry (SchemaStore's dependabot-2.0 schema lists auto and disabled, default auto), so leaving it out is the regression the contract catches; the contract selects the same root gomod entry the existing Gateway API contract uses, including the directories: ["/"] form; every input it cannot evaluate fails it (no root entry, no updates, unparseable YAML, auto, a missing key), and only an entry that rebases on request passes; the CI path filter for the dependency contracts already covers the Dependabot file and this package, so a change to either runs the contract. Behaviour it does not change: Dependabot still opens and supersedes pull requests on its schedule, and @dependabot rebase still works (Dependabot answered that command after a disclosure line on #6826). Stated limit: pull requests already open keep Dependabot's automatic rebase until they are 30 days old.
Verdict: no P0/P1 findings
Readiness at
|

Why
Every time a Go dependency update merges, Dependabot rebases every other open Go dependency update, and each rebase re-runs the whole CI. Updates parked behind an upstream release can never merge, yet six of them were rebased 53 times between them, filling the organization's shared runners and holding up unrelated work such as the platform's production deploys.
What
Go dependency updates are now rebased only when someone asks for it on the update about to merge, a test fails if that setting is ever dropped, and the maintenance notes say when to ask. Updates already open keep being rebased automatically until they are 30 days old, so the effect builds up over the coming weeks.
🤖 Generated with Claude Code
Part of #7579
👉 After merge/promotion: a conflicting Go dependency update no longer fixes itself; it needs a rebase request before it can merge.