build(ci): add Dependabot configuration for all package ecosystems - #9089
Open
DoDiODev wants to merge 1 commit into
Open
build(ci): add Dependabot configuration for all package ecosystems#9089DoDiODev wants to merge 1 commit into
DoDiODev wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
.github/dependabot.ymlso that dependency updates arrive as reviewablepull requests instead of periodic manual audits.
This is a configuration-only change. No source file, build step or runtime
behaviour is touched, and rolling it back means deleting one file.
The configuration covers six ecosystem entries across 14 directories:
gomod/backendgo.modnpm/config-uipackage.json+yarn.locknpm/e2epackage.json(no lockfile)pip/backend/python,/backend/python/pydevlake,/backend/python/plugins/azuredevops,/backend/python/test/fakeplugin,/grafana/scriptsrequirements.txt, 3 ×pyproject.toml+poetry.lockdocker/backend,/config-ui,/grafana,/devops/docker/lake-builder,/.devcontainergithub-actions/.github/actions/auto-cherry-pickDesign decisions
Weekly schedule, five open pull requests per ecosystem. Enough to keep the
tree moving without flooding review capacity.
Minor and patch updates are grouped, majors stay separate. A grouped pull
request keeps low-risk churn to a single review; a major change deserves its own
discussion. This mirrors how the recent manual dependency batches were split.
commit-message.prefix: build(deps)..github/workflows/commit-msg.ymlrejects any commit that does not match its conventional-commit pattern. The
prefix was verified against that exact regular expression, including the grouped
form (
build(deps): bump the … group across 5 directories with 3 updates) andthe development-dependency form (
build(deps-dev): …).Language base images are pinned deliberately, so they are ignored. In Docker
tag semantics
python:3.11 → python:3.14andgolang:1.26 → golang:1.27areminor updates. They are not dependency bumps, though: the Python tag has to
match what the Poetry lockfiles resolve against, and the Go tag has to match the
godirective inbackend/go.modand the toolchain used by CI. Both aretherefore ignored for minor as well as major updates and remain a conscious,
manual decision.
nodeis ignored for majors only, because the build imagetracks the active LTS line and Node 26 is not an LTS release.
versioning-strategy: increasefor/e2e. That directory declares"@playwright/test": "^1.58.2"and has no lockfile. With the default strategyDependabot only rewrites a manifest once a release leaves the declared range, so
the entry would have produced nothing while still looking configured.
git2gois never bumped automatically. It is ABI-coupled to the libgit2version installed in the builder image; a mismatch fails at link time.
Action pinning
Most workflows reference actions by tag. The
docker/*actions are pinned to acommit SHA with a
# vX.Y.Zcomment, for example:Dependabot updates such a pin to the new commit SHA and rewrites the version
comment, so the pinning style is preserved rather than replaced by a tag.
Dependabot never proposes changing the namespace of an action. Moving to a
differently owned action stays a manual step, which matters here because ASF
infrastructure maintains an allow-list of permitted actions.
Files that are not valid workflows are not read at all — this includes
.github/workflows/codespell.yml.action-blocked-by-asfandgo-checklist.yml.bak. The blocked Codespell action is therefore left alone.Deferred upgrades
Every
ignoreentry carries a comment explaining why it exists, so it can beremoved once the reason no longer applies:
typescript(major)node(major)github.com/swaggo/swag(major)github.com/libgit2/git2go/*gopython,golang,mcr.microsoft.com/devcontainers/go(major + minor)Not covered
Stating this explicitly, because a configuration file can otherwise suggest more
coverage than it provides:
docker-compose*.yml— thedockerecosystem reads Dockerfiles only, sothe
mysqlandpostgresservice images stay on manual maintenance.devops/deployment/k8s/k8s-deploy.yamland the Helm chart — images pinnedin plain YAML are not a supported manifest format.
backend/scripts/install-mockery.sh— a tool version inside a shellscript.
apache/skywalking-eyes@main— a branch reference rather than a version.backend/python/requirements.txt— without a versionconstraint there is nothing to raise.
Validation
dependabot-2.0.jsonschema (Draft 7) withno violations, which also confirms the plural
directorieskey and everyupdate-typesvalue used..github/workflows/commit-msg.ymlfor six representative bot commit forms.Verified on a fork before opening this PR
This configuration was run against a fork with version updates enabled. On
2026-09-01 it produced 17 pull requests across five ecosystems, which
confirms the behaviour that matters here:
js-minor-patchbundled 21 updates into a single PR,actions-minor-patchbundled 4, andpython-minor-patchbundled 3 across twodirectories. Major bumps stayed outside the groups, as intended.
github-actionsgroup PR rewrote SHAs to newSHAs and carried the
# vX.Y.Zcomment along, e.g.docker/setup-qemu-action@ce36039… # v4.0.0becamedocker/setup-qemu-action@96fe6ef… # v4.2.0. No pin was downgraded to a tag.versioning-strategy: increaseis required for/e2e. It producedupdate @playwright/test requirement from ^1.58.2 to ^1.62.1- a bump thatwould otherwise stay silent, because the new release already satisfies the
declared caret range and that directory has no lockfile.
ignorerules hold.typescriptis at 6.0.3 with 7.0.2 available andno PR was raised. The language images (
node,golang,python) werelikewise left alone.
open-pull-requests-limitthrottles. Thegithub-actionsecosystemstopped exactly at its limit of 5.
Two issues surfaced during that run and are already fixed in this branch:
dependency-name: mcr.microsoft.com/devcontainers/gonever matched, becauseDependabot strips the registry host from the dependency name. Using
devcontainers/gofixes it - after the change Dependabot closed thesuperfluous PR itself with "Looks like devcontainers/go is no longer being
updated by Dependabot".
labelswere dropped. Dependabot only creates its default labelsautomatically; labels named in the configuration must already exist, and none
of the ones originally chosen exist in this repository. Every PR carried a
"The following labels could not be found" warning. Without the key,
Dependabot applies and creates its defaults, so no repository setup is
required up front. Maintainers can add their own labels later if they want
them.
Known limitation: the
gomodecosystemThe sixth ecosystem,
gomod, could not be verified. It fails for a reason thatis independent of this configuration:
backend/mocks/is gitignored whiletracked sources such as
helpers/unithelperimport it, sogo mod tidycannotresolve those packages and Dependabot aborts after every version bump.
The same failure reproduces on a plain checkout without Dependabot involved:
Generating the mocks first makes
go mod tidyexit cleanly and leavesgo.modand
go.sumbyte-identical, so the module itself is consistent.This is tracked separately in #9088. Until it is
resolved, the
gomodblock in this file will not produce pull requests. It iskept in place so that Go updates start working as soon as the underlying issue
is fixed - reviewers may of course prefer to drop the block until then.
Rollback
Delete the file. Any pull requests Dependabot has already opened need to be
closed manually.