|
1 | 1 | { |
2 | 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", |
3 | 3 | "extends": [ |
4 | | - "config:recommended" |
5 | | - ] |
| 4 | + // Start with the Renovate recommended config |
| 5 | + // https://docs.renovatebot.com/presets-config/#configrecommended |
| 6 | + "config:recommended", |
| 7 | + // ensure all GHA are pinned to digests |
| 8 | + // https://docs.renovatebot.com/presets-helpers/#helperspingithubactiondigests |
| 9 | + "helpers:pinGitHubActionDigests", |
| 10 | + // report on abandoned pacakges |
| 11 | + // https://docs.renovatebot.com/presets-abandonments/ |
| 12 | + "abandonments:recommended", |
| 13 | + // We don't want automated docker/docker-compose/Dockerfile updates |
| 14 | + "docker:disable", |
| 15 | + // Add the nice badges to PRs |
| 16 | + // https://docs.renovatebot.com/presets-mergeConfidence/#mergeconfidenceall-badges |
| 17 | + "mergeConfidence:all-badges" |
| 18 | + ], |
| 19 | + // Label all Reonvate PRs with "dependencies" |
| 20 | + "labels": ["dependencies"], |
| 21 | + // |
| 22 | + // NOTE: lockFileMaintenance is currently disabled as it doesn't respect the |
| 23 | + // minimumReleaseAge for uv. An open PR for adding it has been put on hold for now. |
| 24 | + // https://github.com/renovatebot/renovate/pull/41913#issuecomment-4231423178 |
| 25 | + // Instead, for now we use the update-dependencies-action to update the |
| 26 | + // uv lockfile |
| 27 | + "lockFileMaintenance": { "enabled": false}, |
| 28 | + // update transitive deps by updating the entire lockfile |
| 29 | + // We run this on the same schedule; add a note for the reviewer to do the |
| 30 | + // default dependencies first to reduce the amount needed for review in the |
| 31 | + // full lockfile update |
| 32 | + // "lockFileMaintenance": { |
| 33 | + // "enabled": true, |
| 34 | + // "minimumReleaseAge": "7 days", |
| 35 | + // "schedule": [ |
| 36 | + // "* 0-3 * * WED" |
| 37 | + // ], |
| 38 | + // "prBodyNotes": [":information_source: Before reviewing this PR, merge any prod/dev dependency PRs and rebase."] |
| 39 | + // }, |
| 40 | + // don't auto-update python-version, we want to manage python updates ourselves |
| 41 | + "ignorePaths": [".python-version"], |
| 42 | + // Note package rules apply only to direct dependencies |
| 43 | + // group dependencies by dev/prod, cooldown 7 days, run early Wed mornings |
| 44 | + // rangeStrategy: widen expands the range when a new version is found and updates the lockfile (with respect to the cooldown). |
| 45 | + // Assumes that the repo has upper limits (<=) set on pyproject.toml dependencies |
| 46 | + // Note that we can't (as of 2026-03-20 at least) use the "bump" strategy to always bump versions. This expands |
| 47 | + // the pyproject.toml range with respect to the cooldown, but DOESN'T respect the cooldown when it updates the |
| 48 | + // lockfile, which results in a conflict with MinimumReleaseAge. |
| 49 | + "packageRules": [ |
| 50 | + // We handle github runners (ubuntu versions etc) manually |
| 51 | + { |
| 52 | + "matchDatasources": ["github-runners"], |
| 53 | + "enabled": false |
| 54 | + }, |
| 55 | + // pep621 covers pyproject.toml and uv.lock files |
| 56 | + // https://docs.renovatebot.com/modules/manager/pep621/ |
| 57 | + { |
| 58 | + "matchManagers": ["pep621"], |
| 59 | + "matchDepTypes": ["dependency-groups", "tool.uv.dev-dependencies"], |
| 60 | + "addLabels": ["python"], |
| 61 | + "groupName": "python dev dependencies", |
| 62 | + "rangeStrategy": "widen", |
| 63 | + "minimumReleaseAge": "7 days", |
| 64 | + "schedule": [ |
| 65 | + "* 0-3 * * WED" |
| 66 | + ], |
| 67 | + }, |
| 68 | + { |
| 69 | + "matchManagers": ["pep621"], |
| 70 | + "matchDepTypes": ["project.dependencies", "project.optional-dependencies", "tool.uv.sources"], |
| 71 | + "addLabels": ["python"], |
| 72 | + "groupName": "python prod dependencies", |
| 73 | + "rangeStrategy": "widen", |
| 74 | + "minimumReleaseAge": "7 days", |
| 75 | + "schedule": [ |
| 76 | + "* 0-3 * * WED" |
| 77 | + ], |
| 78 | + }, |
| 79 | + { |
| 80 | + "matchManagers": ["github-actions"], |
| 81 | + "addLabels": ["actions"], |
| 82 | + "minimumReleaseAge": "7 days", |
| 83 | + "schedule": [ |
| 84 | + "* 0-3 * * WED" |
| 85 | + ] |
| 86 | + }, |
| 87 | + // disable minimumReleaseAge for pinDigest to avoid the stability-days check showing as pending |
| 88 | + // when Renovate opens a PR for pinning GHA dependencies to digests |
| 89 | + { |
| 90 | + "description": "Disable minimumReleaseAge for pinDigest update types", |
| 91 | + "matchUpdateTypes": ["pinDigest"], |
| 92 | + "minimumReleaseAge": null, |
| 93 | + }, |
| 94 | + // EXAMPLE: If required, pin a specific dependency to an upper allowed version |
| 95 | + // Otherwise renovate will use the general "widen" strategy to change the upper limit in pyproject.toml |
| 96 | + // and will bump it anyway |
| 97 | + // { |
| 98 | + // "matchManagers": ["pep621"], |
| 99 | + // "matchDepNames": ["Django"], |
| 100 | + // "allowedVersions": "<6.0" |
| 101 | + // }, |
| 102 | + ], |
| 103 | + // Include vulnerability alerts; this uses dependabot and requires that depenency graph and |
| 104 | + // dependabot alerts are enabled in the repo |
| 105 | + // https://docs.renovatebot.com/configuration-options/#vulnerabilityalerts |
| 106 | + "vulnerabilityAlerts": { |
| 107 | + "addLabels": ["security"] |
| 108 | + } |
6 | 109 | } |
0 commit comments