ci: switch from dependabot to renovate - #244
Draft
nielspardon wants to merge 1 commit into
Draft
Conversation
nielspardon
marked this pull request as draft
July 30, 2026 19:19
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.
Dependabot has no pixi support, so
pixi.lockis never refreshed when a dependency PR changespyproject.toml. Because pixi validates the lock file against the manifest, a stalepixi.lockbreaksruff.yml, the workflow that uses pixi. Renovate handles this: it runsuv lockandpixi lockfor the same update, so both lock files stay in step with the manifest.This mirrors substrait-io/substrait#1075, which makes the same switch for the spec repo and demonstrates the result end to end. Unlike that PR this one is config-only, with no self-hosted workflow: a Renovate maintainer has confirmed that Mend will add
pixitoallowedUnsafeExecutionson the hosted Renovate App, sopixi.lockrefreshes will start working here with no further change once that lands.uv.lockis not gated and works immediately, as does everything else Renovate manages.renovate.json, porting the existing dependabot configuration..github/dependabot.ymlto disable dependabot.pr_title.yml. The dependabot patterns stay for now, because dependabot PRs opened before this change are still open and would start failing the PR title check without them.How the dependabot configuration maps across
.github/dependabot.ymlrenovate.jsongithub-actions, weeklylockFileMaintenanceruns weeklyuvecosystem, weeklypep621manager, which drives bothuv.lockandpixi.locksubstraitgroup (3 packages)matchPackageNames,groupName: substrait packagesdockerin/.devcontainerdockerfilemanagercommit-message: {prefix: chore, include: scope}semanticCommitType: chore+ adeps-devscope ruleVerified locally with
renovate --platform=local:pep621reports bothuv.lockandpixi.lockas lock files forpyproject.toml,dockerfilepicks up the devcontainer image, andgithub-actionscovers the workflows — 59 dependencies in total, with no repository problems reported.Three choices worth a look:
The
substraitgroup is mandatory rather than cosmetic.version-checks.ymlrunscheck_substrait_package_versions.shon every PR, which fails unlesssubstrait-protobuf,substrait-antlrandsubstrait-extensionsall report the same version. Ungrouped, Renovate would raise three separate PRs and each one would fail CI. This is the one dependabot group that has to be carried over exactly.The
pre-commitmanager is deliberately left disabled..pre-commit-config.yamlhas aci:block, so pre-commit.ci already autoupdates the hooks withchore(deps): [pre-commit.ci] autoupdate. Renovate'spre-commitmanager is off by default and enabling it would duplicate that work. The spec repo does enable it, because it has no pre-commit.ci.:semanticCommitTypeAll(chore)is belt-and-braces.config:recommendedpulls in:semanticPrefixFixDepsChoreOthers, which assignsfixto dependencies whosedepTypeisdependencies, and package rules override top-level config. Ourpep621dependencies come through asproject.dependenciesanddependency-groups, so nothing currently matches that rule and dependency PRs would bechoreregardless. Pinning it explicitly keeps that true if the dependency layout or the preset changes later, which matters here becausefixwould make semantic-release cut a patch release from a dependency bump.Dependencies declared as ranges only get a PR once the new version falls outside the range, so a quiet dependency is expected rather than a sign that something is broken.
lockFileMaintenancecovers the rest by refreshing the transitive pins in both lock files weekly.