Skip to content

Commit f601196

Browse files
committed
build(ci): add Dependabot configuration for all package ecosystems
1 parent c8288c0 commit f601196

1 file changed

Lines changed: 272 additions & 0 deletions

File tree

‎.github/dependabot.yml‎

Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
#
2+
# Licensed to the Apache Software Foundation (ASF) under one or more
3+
# contributor license agreements. See the NOTICE file distributed with
4+
# this work for additional information regarding copyright ownership.
5+
# The ASF licenses this file to You under the Apache License, Version 2.0
6+
# (the "License"); you may not use this file except in compliance with
7+
# the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
18+
# Dependabot version updates.
19+
#
20+
# Conventions used throughout this file:
21+
# * `commit-message.prefix: build(deps)` matches the commit convention that
22+
# `.github/workflows/commit-msg.yml` enforces on every pull request.
23+
# * Minor and patch updates are grouped into a single pull request per
24+
# ecosystem; majors stay separate so they remain individually reviewable.
25+
# * `ignore` entries document deliberately deferred upgrades. Each one names
26+
# the reason, so the rule can be removed once the reason disappears.
27+
#
28+
# Known coverage gaps (intentionally not automated):
29+
# * Compose files use their own `docker-compose` ecosystem. Its filename
30+
# matcher does not accept the two multi-suffix names
31+
# `docker-compose-dev-mysql.yml` and `docker-compose-dev-postgresql.yml`,
32+
# so the images in those files stay on manual maintenance.
33+
# * Workflow `container:` and `services:` images are not covered either: the
34+
# `github-actions` ecosystem only updates `uses:` references.
35+
# * `backend/scripts/install-mockery.sh` pins a tool version in a shell
36+
# script and is not a supported manifest format.
37+
version: 2
38+
updates:
39+
# ---------------------------------------------------------------- Go -----
40+
- package-ecosystem: gomod
41+
directory: /backend
42+
schedule:
43+
interval: weekly
44+
day: monday
45+
time: "06:00"
46+
timezone: Etc/UTC
47+
open-pull-requests-limit: 5
48+
commit-message:
49+
prefix: build(deps)
50+
groups:
51+
go-minor-patch:
52+
patterns:
53+
- "*"
54+
update-types:
55+
- minor
56+
- patch
57+
ignore:
58+
# The Go toolchain directive is coupled to the CI bootstrap version and
59+
# to the golang base images; it is raised deliberately, never by a bot.
60+
- dependency-name: go
61+
# git2go is ABI-coupled to the libgit2 version installed in the builder
62+
# image. A mismatch fails at link time, so this is always manual.
63+
- dependency-name: github.com/libgit2/git2go/*
64+
# swag v2 is still a release candidate and requires regenerating every
65+
# swagger annotation. Tracked as an externally gated upgrade.
66+
- dependency-name: github.com/swaggo/swag
67+
update-types:
68+
- version-update:semver-major
69+
70+
# -------------------------------------------------------------- npm ------
71+
- package-ecosystem: npm
72+
directory: /config-ui
73+
schedule:
74+
interval: weekly
75+
day: monday
76+
time: "06:00"
77+
timezone: Etc/UTC
78+
open-pull-requests-limit: 5
79+
commit-message:
80+
prefix: build(deps)
81+
groups:
82+
js-minor-patch:
83+
patterns:
84+
- "*"
85+
update-types:
86+
- minor
87+
- patch
88+
ignore:
89+
# TypeScript 7 is the native-port compiler. Upgrading requires validating
90+
# the whole build chain (vite, eslint, type definitions) in one go.
91+
- dependency-name: typescript
92+
update-types:
93+
- version-update:semver-major
94+
95+
- package-ecosystem: npm
96+
directory: /e2e
97+
schedule:
98+
interval: weekly
99+
day: monday
100+
time: "06:00"
101+
timezone: Etc/UTC
102+
open-pull-requests-limit: 5
103+
commit-message:
104+
prefix: build(deps)
105+
# This directory has no lockfile. Without `increase`, Dependabot would stay
106+
# silent as long as a new release still satisfies the declared caret range.
107+
versioning-strategy: increase
108+
groups:
109+
e2e-minor-patch:
110+
patterns:
111+
- "*"
112+
update-types:
113+
- minor
114+
- patch
115+
116+
# ------------------------------------------------------------- Python ----
117+
- package-ecosystem: pip
118+
directories:
119+
- /backend/python
120+
- /backend/python/pydevlake
121+
- /backend/python/plugins/azuredevops
122+
- /backend/python/test/fakeplugin
123+
- /grafana/scripts
124+
schedule:
125+
interval: weekly
126+
day: monday
127+
time: "06:00"
128+
timezone: Etc/UTC
129+
open-pull-requests-limit: 5
130+
commit-message:
131+
prefix: build(deps)
132+
groups:
133+
python-minor-patch:
134+
patterns:
135+
- "*"
136+
update-types:
137+
- minor
138+
- patch
139+
ignore:
140+
# pydevlake is written against Pydantic 1 and SQLModel 0.0.8. SQLModel is
141+
# still pre-1.0, so SemVer treats even 0.0.8 -> 0.0.30 as a patch, yet that
142+
# release pulls in SQLAlchemy 2 and Pydantic 2 and breaks
143+
# `pydevlake/model.py` with "Passing primary_key is not supported when also
144+
# passing a sa_column". Verified on a fork: the bump landed in the group
145+
# and turned unit-test and test-e2e red.
146+
# Drop both entries once pydevlake has been migrated to Pydantic 2.
147+
- dependency-name: sqlmodel
148+
- dependency-name: pydantic
149+
update-types:
150+
- version-update:semver-major
151+
152+
# ------------------------------------------------------------- Docker ----
153+
#
154+
# This block covers both Dockerfiles and Kubernetes manifests: the `docker`
155+
# file fetcher also picks up YAML files that carry `apiVersion` and `kind`,
156+
# which is why `/devops/deployment/k8s` is listed here. Only the `mysql`
157+
# image there is pinned to a version; the `apache/devlake*` images use
158+
# `latest` and are left untouched.
159+
#
160+
# Note on Docker tag semantics: language base images encode their version in
161+
# the tag, so `node:24 -> node:25` is a major update while
162+
# `python:3.11 -> python:3.14` would count as a minor one. All three images
163+
# define a runtime rather than a dependency: the Python tag has to match what
164+
# the Poetry lockfiles resolve against, and the Go tag has to match the `go`
165+
# directive in backend/go.mod and the toolchain used by CI. They are raised
166+
# deliberately, so they are ignored here.
167+
- package-ecosystem: docker
168+
directories:
169+
- /backend
170+
- /config-ui
171+
- /grafana
172+
- /devops/docker/lake-builder
173+
- /.devcontainer
174+
- /devops/deployment/k8s
175+
schedule:
176+
interval: weekly
177+
day: monday
178+
time: "06:00"
179+
timezone: Etc/UTC
180+
open-pull-requests-limit: 5
181+
commit-message:
182+
prefix: build(deps)
183+
groups:
184+
docker-patch:
185+
patterns:
186+
- "*"
187+
update-types:
188+
- patch
189+
ignore:
190+
# The build image tracks the active LTS line. Node 26 is not an LTS
191+
# release, and a trial run confirmed that without this rule Dependabot
192+
# proposes moving from 24 to 25.
193+
- dependency-name: node
194+
update-types:
195+
- version-update:semver-major
196+
# Ignored for minor as well, because a jump such as 3.11 -> 3.14 is a
197+
# minor update in tag terms while being a runtime change in practice.
198+
- dependency-name: python
199+
update-types:
200+
- version-update:semver-major
201+
- version-update:semver-minor
202+
- dependency-name: golang
203+
update-types:
204+
- version-update:semver-major
205+
- version-update:semver-minor
206+
# Dependabot strips the registry host from the dependency name, so this
207+
# must be "devcontainers/go" and not "mcr.microsoft.com/devcontainers/go".
208+
- dependency-name: devcontainers/go
209+
update-types:
210+
- version-update:semver-major
211+
- version-update:semver-minor
212+
213+
# ----------------------------------------------------- Docker Compose ---
214+
#
215+
# The separate Compose updater recognises four of the six non-release
216+
# Compose files. The two docker-compose-dev-*.yml names are not matched by
217+
# its current filename regexp and therefore remain a documented manual gap.
218+
# Jira, Jenkins and Bitbucket are compatibility fixtures rather than runtime
219+
# dependencies; their deliberately old versions must not be raised blindly.
220+
- package-ecosystem: docker-compose
221+
directories:
222+
- /
223+
- /.devcontainer
224+
- /devops/deployment/temporal
225+
- /backend/test/e2e/remote
226+
schedule:
227+
interval: weekly
228+
day: monday
229+
time: "06:00"
230+
timezone: Etc/UTC
231+
open-pull-requests-limit: 5
232+
commit-message:
233+
prefix: build(deps)
234+
groups:
235+
compose-minor-patch:
236+
patterns:
237+
- "*"
238+
update-types:
239+
- minor
240+
- patch
241+
ignore:
242+
- dependency-name: jenkins/jenkins
243+
- dependency-name: atlassian/jira-software
244+
- dependency-name: atlassian/bitbucket-server
245+
246+
# ------------------------------------------------------ GitHub Actions ---
247+
#
248+
# Most workflows reference actions by tag, while the docker/* actions are
249+
# pinned to a commit SHA with a `# vX.Y.Z` comment. Dependabot updates a
250+
# SHA pin to the new SHA and rewrites that comment, so pinning is preserved.
251+
#
252+
# Dependabot never proposes a change of action *namespace*. Migrating to a
253+
# differently owned action stays a manual step because ASF infrastructure
254+
# maintains an allow-list of permitted actions.
255+
- package-ecosystem: github-actions
256+
directory: /
257+
schedule:
258+
interval: weekly
259+
day: monday
260+
time: "06:00"
261+
timezone: Etc/UTC
262+
open-pull-requests-limit: 5
263+
commit-message:
264+
prefix: build(deps)
265+
groups:
266+
actions-minor-patch:
267+
patterns:
268+
- "*"
269+
update-types:
270+
- minor
271+
- patch
272+

0 commit comments

Comments
 (0)