From 0b80c0d782b026b233f0635b67d8d44f731543b0 Mon Sep 17 00:00:00 2001 From: James Manuel Date: Mon, 3 Aug 2026 16:00:49 +0200 Subject: [PATCH] ci(dependabot): group minor and patch updates, disable npm auto-rebase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The js/ build output is committed, and npm-build.yml fails when the working tree is dirty after a build. Every bundled-dependency bump therefore makes the committed assets stale, and the PR needs a /compile comment before it can go green. That cost is per-PR, and worse, every merge to a target branch invalidates the committed assets on all the other open PRs — so a backlog of N bumps is up to N sequential rebase/compile/merge cycles rather than N compiles. There are currently 17 open dependabot PRs across main and stable34. Group minor and patch updates so a week of bumps arrives as a handful of PRs rather than one per dependency. Each npm block gets three groups, and since groups are first-match the order matters: - npm-production and npm-development split direct dependencies, so a bundle regression is narrowed to one half rather than requiring a bisect across every dependency in a single PR, each attempt costing a /compile. - npm-other then catches everything the first two cannot. dependency-type covers direct dependencies only, and npm is not one of the ecosystems for which it extends to indirect ones, so without this group transitive bumps would keep arriving as individual PRs. That is not a marginal case: four of the ten currently open npm PRs on main are transitive (immutable, fast-uri, postcss, and axios, the last because the manifest declares @nextcloud/axios), and dompurify in #82 was too. Those bundled transitive runtime dependencies are exactly the ones that need a /compile. Majors stay ungrouped on main so they still get individual review; on stable34 the existing ignore rule already limits updates to patches. Also disable auto-rebase for npm. A rebase without a recompile leaves CI red regardless, so rebasing every open PR on each merge only burns CI runs across the whole queue. Composer keeps auto-rebase, since those PRs pass without a recompile. Adds a cooldown so rapid successive releases of the same dependency collapse into one update rather than one PR each. Cooldown applies to version updates only, so security updates are not delayed. This mirrors nextcloud/server, which commits its dist/ output and uses the same combination of groups, disabled npm rebasing and cooldown for the same reason. Co-Authored-By: Claude Opus 5 (1M context) Signed-off-by: James Manuel --- .github/dependabot.yml | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5fd0b4e..136b4c7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,6 +10,13 @@ updates: time: "03:00" timezone: Europe/Paris open-pull-requests-limit: 10 + groups: + composer: + patterns: + - "*" + update-types: + - minor + - patch - package-ecosystem: npm directory: "/" schedule: @@ -18,6 +25,37 @@ updates: time: "03:00" timezone: Europe/Paris open-pull-requests-limit: 10 + # Assets are committed, so a rebase without a recompile leaves CI red anyway. + # Rebase manually alongside /compile when the PR is ready to merge. + rebase-strategy: "disabled" + cooldown: + default-days: 4 + semver-major-days: 8 + # Groups are first-match. The production/development split keeps a bundle + # regression narrowed to one half; npm-other then catches transitive + # dependencies, which dependency-type does not cover for npm and which would + # otherwise still land as individual pull requests. + groups: + npm-production: + dependency-type: production + patterns: + - "*" + update-types: + - minor + - patch + npm-development: + dependency-type: development + patterns: + - "*" + update-types: + - minor + - patch + npm-other: + patterns: + - "*" + update-types: + - minor + - patch - package-ecosystem: npm directory: "/" schedule: @@ -27,6 +65,21 @@ updates: timezone: Europe/Paris target-branch: stable34 open-pull-requests-limit: 10 + rebase-strategy: "disabled" + cooldown: + default-days: 4 + groups: + npm-production: + dependency-type: production + patterns: + - "*" + npm-development: + dependency-type: development + patterns: + - "*" + npm-other: + patterns: + - "*" ignore: # do not do breaking changes on stable branches - dependency-name: "*" @@ -42,6 +95,10 @@ updates: timezone: Europe/Paris target-branch: stable34 open-pull-requests-limit: 10 + groups: + composer: + patterns: + - "*" ignore: # do not do breaking changes on stable branches - dependency-name: "*"