Skip to content

Commit 3c526e7

Browse files
ruromeroclaude
andauthored
ci: suppress dependabot updates for test fixture manifests (#422)
## Summary - **Problem:** `exclude-paths` in `dependabot.yml` only applies to version updates, [not security updates](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#exclude-paths). This caused 8+ noisy PRs from dependabot trying to bump intentionally-pinned vulnerable deps in test fixture manifests under `src/test/resources/tst_manifests/` and `src/test/resources/msc/`. - **Solution:** Add dedicated dependabot entries per ecosystem that target the test fixture directories with `ignore: [{dependency-name: "*"}]` to suppress both version and security update PRs ([ref](https://ovirium.com/blog/exclude-directory-from-dependabot-checks/)). The `ignore` option [supports security updates](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#ignore) unlike `exclude-paths`. ### Changes | Ecosystem | Change | |---|---| | maven (production) | Unchanged | | maven (test fixtures) | New entry with `directories` targeting `tst_manifests/maven/**` + `it/maven/**` + `ignore: *` | | npm (test fixtures) | Replaced `directory: "/"` + `exclude-paths` with `directories` targeting all JS test fixture dirs + `ignore: *` | | pip | Replaced with targeted `directories` pointing to `pip/**` + `it/pypi/**` + `ignore: *` | | gomod | Replaced with targeted `directories` pointing to `golang/**`, `it/golang/**`, `msc/golang/**` + `ignore: *` | | gradle | Replaced with targeted `directories` pointing to `gradle-groovy/**`, `gradle-kotlin/**` + `it/` equivalents + `ignore: *` | | cargo | Replaced with targeted `directories` pointing to `cargo/**` + `ignore: *` | Mirrors guacsec/trustify-da-javascript-client#477. ## Test plan - [ ] Verify dependabot stops creating PRs for test fixture manifests (check after next scan cycle) - [ ] Verify production maven security/version updates still work - [ ] Close existing 8 test fixture dependabot PRs after confirming 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 1aee31c commit 3c526e7

1 file changed

Lines changed: 57 additions & 28 deletions

File tree

.github/dependabot.yml

Lines changed: 57 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
# yaml-language-server: $schema=https://www.schemastore.org/dependabot-2.0.json
12
version: 2
23
updates:
4+
# ── Production dependencies ──────────────────────────────────────────
35
- package-ecosystem: "maven"
46
directory: "/"
57
schedule:
@@ -10,41 +12,68 @@ updates:
1012
directory: "/"
1113
schedule:
1214
interval: "weekly"
13-
# Prevent Dependabot from scanning test fixture manifests.
14-
# These contain intentionally pinned (and sometimes vulnerable)
15-
# dependencies used as test data for the dependency-analysis client.
15+
16+
# ── Test fixture manifests (suppress all updates including security) ─
17+
# These directories contain intentionally pinned dependencies used as
18+
# test fixtures. They must NOT be updated by dependabot.
19+
- package-ecosystem: "maven"
20+
directories:
21+
- "/src/test/resources/tst_manifests/maven/**"
22+
- "/src/test/resources/tst_manifests/it/maven/**"
23+
schedule:
24+
interval: "monthly"
25+
labels: []
26+
ignore:
27+
- dependency-name: "*"
1628
- package-ecosystem: "npm"
17-
directory: "/"
29+
directories:
30+
- "/src/test/resources/tst_manifests/npm/**"
31+
- "/src/test/resources/tst_manifests/pnpm/**"
32+
- "/src/test/resources/tst_manifests/yarn-berry/**"
33+
- "/src/test/resources/tst_manifests/yarn-classic/**"
34+
- "/src/test/resources/tst_manifests/it/npm/**"
35+
- "/src/test/resources/tst_manifests/it/pnpm/**"
36+
- "/src/test/resources/tst_manifests/it/yarn/**"
1837
schedule:
19-
interval: "weekly"
20-
exclude-paths:
21-
- "src/test/**"
22-
open-pull-requests-limit: 0
38+
interval: "monthly"
39+
labels: []
40+
ignore:
41+
- dependency-name: "*"
2342
- package-ecosystem: "pip"
24-
directory: "/"
43+
directories:
44+
- "/src/test/resources/tst_manifests/pip/**"
45+
- "/src/test/resources/tst_manifests/it/pypi/**"
2546
schedule:
26-
interval: "weekly"
27-
exclude-paths:
28-
- "src/test/**"
29-
open-pull-requests-limit: 0
47+
interval: "monthly"
48+
labels: []
49+
ignore:
50+
- dependency-name: "*"
3051
- package-ecosystem: "gomod"
31-
directory: "/"
52+
directories:
53+
- "/src/test/resources/tst_manifests/golang/**"
54+
- "/src/test/resources/tst_manifests/it/golang/**"
55+
- "/src/test/resources/msc/golang/**"
3256
schedule:
33-
interval: "weekly"
34-
exclude-paths:
35-
- "src/test/**"
36-
open-pull-requests-limit: 0
57+
interval: "monthly"
58+
labels: []
59+
ignore:
60+
- dependency-name: "*"
3761
- package-ecosystem: "gradle"
38-
directory: "/"
62+
directories:
63+
- "/src/test/resources/tst_manifests/gradle-groovy/**"
64+
- "/src/test/resources/tst_manifests/gradle-kotlin/**"
65+
- "/src/test/resources/tst_manifests/it/gradle-groovy/**"
66+
- "/src/test/resources/tst_manifests/it/gradle-kotlin/**"
3967
schedule:
40-
interval: "weekly"
41-
exclude-paths:
42-
- "src/test/**"
43-
open-pull-requests-limit: 0
68+
interval: "monthly"
69+
labels: []
70+
ignore:
71+
- dependency-name: "*"
4472
- package-ecosystem: "cargo"
45-
directory: "/"
73+
directories:
74+
- "/src/test/resources/tst_manifests/cargo/**"
4675
schedule:
47-
interval: "weekly"
48-
exclude-paths:
49-
- "src/test/**"
50-
open-pull-requests-limit: 0
76+
interval: "monthly"
77+
labels: []
78+
ignore:
79+
- dependency-name: "*"

0 commit comments

Comments
 (0)