ci: switch from dependabot to renovate - #52
Draft
nielspardon wants to merge 1 commit into
Draft
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.
Dependabot has no pixi support at all, so
pixi.lockis never refreshed when a dependency PR changespixi.toml. Because pixi validates the lock file against the manifest, such a PR leaves the repository in a state where the lock and the manifest disagree. Renovate handles this: it runspixi lockas part of the update.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. Everything else Renovate manages works immediately.renovate.json, porting the existing dependabot configuration..github/dependabot.ymlto disable dependabot.Requires #51 to land before the Renovate App is installed, so that a lock refresh cannot produce a v7 lock file that our pinned pixi cannot read.
How the dependabot configuration maps across
.github/dependabot.ymlrenovate.jsongithub-actionsgroupmatchManagers: ["github-actions"],groupName: github-actionsjava-dependenciesgroup (/java)matchManagers: ["gradle", "gradle-wrapper"]python-dependenciesgroup (3 ×/python/*)matchManagers: ["pep621"]rust-dependenciesgroup (3 ×/rust/*)matchManagers: ["cargo"]schemarsignorematchPackageNames: ["schemars"],allowedVersions: "<0.9"schedule: weekly(all)lockFileMaintenanceruns weeklymatchManagers: ["pixi"],groupName: pixi-dependenciesRenovate needs no per-directory configuration, so the six dependabot entries collapse into one manager rule each. Verified locally with
renovate --platform=local:cargo(3 files),github-actions(17),gradle(10),gradle-wrapper(1),pep621(3) andpixi(1) all extract, 204 dependencies in total, and the expected groups appear as branches.Two deliberate differences from a literal translation, both worth a look:
The
schemarspin is tightened. Dependabot ignoredversion-update:semver-majorfor it, butschemarsis at0.8.22and its major component is0, so0.9.0counts as a minor update and dependabot would have proposed it. That contradicts theCargo.tomlcomment, which says the pin has to stay on0.8to match the schemars version typify 0.7 uses, and Cargo itself treats a0.xminor bump as breaking (Renovate reportsisBreaking: truefor it).allowedVersions: "<0.9"expresses the actual intent. With it,schemarsreports no updates at all; without it, Renovate proposes0.9.0.:semanticCommitTypeAll(build)is required to keep thebuild(deps):prefix.config:recommendedpulls in:semanticPrefixFixDepsChoreOthers, which contributes a rule assigningfixto dependencies whosedepTypeisdependencies— 22 of ours, across cargo and gradle. Package rules override top-level config, so without this preset those PRs would arrive titledfix(deps):instead. There is no semantic-release in this repository, so this only affects titles.Also worth noting: Renovate has no
cmakemanager, so theFetchContentdependencies incpp/*/CMakeLists.txtstay unmanaged exactly as they are today. And thegradle-wrappermanager can only regenerate the wrapper scripts if Mend allowsgradleWrapperinallowedUnsafeExecutions; thedistributionUrlbump that actually upgrades Gradle lands either way.