|
| 1 | +// renovate.json5 - Mender dependency update configuration for integration |
| 2 | +// See Documentation/dependency-updates.md in mender-qa for the process. |
1 | 3 | { |
2 | 4 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", |
| 5 | + |
3 | 6 | "extends": [ |
4 | 7 | "config:recommended", |
5 | 8 | ":gitSignOff", |
6 | 9 | ":rebaseStalePrs" |
7 | 10 | ], |
8 | | - "reviewers": ["team:qa-dependabot-reviewers"], |
9 | 11 |
|
10 | | - "packageRules": [ |
11 | | - { |
12 | | - // TODO: remove some of these when we ditch dependabot |
13 | | - "matchCategories": ["python", "docker", "ci"], |
14 | | - "enabled": false |
15 | | - }, |
16 | | - { |
17 | | - // The backend composition lives in this submodule, so keeping it current is |
18 | | - // how integration picks up new/changed services. Grouped and labelled so the |
19 | | - // bump is obvious: it can change the topology under the whole test suite. |
20 | | - "matchManagers": ["git-submodules"], |
21 | | - "matchDepNames": ["tests/mender_server"], |
22 | | - "enabled": true, |
23 | | - "groupName": "mender-server compose files", |
24 | | - "commitMessageTopic": "mender-server submodule", |
25 | | - "schedule": ["before 6am on monday"], |
26 | | - }, |
27 | | - ], |
| 12 | + // CODEOWNERS drives reviewer assignment - keep its dependency file entries current. |
| 13 | + "reviewersFromCodeOwners": true, |
28 | 14 |
|
29 | | - "git-submodules": { |
| 15 | + // fix(deps): <desc>, per renovate.json5.sample in mender-qa. |
| 16 | + "semanticCommits": "enabled", |
| 17 | + "semanticCommitType": "fix", |
| 18 | + "semanticCommitScope": "deps", |
| 19 | + |
| 20 | + // Fallback window for weeks with no merges; the renovate CI job is the primary trigger. |
| 21 | + "schedule": ["after 10pm on Monday", "before 6am on Tuesday"], |
| 22 | + |
| 23 | + // Was prHourlyLimit 0 (unlimited) while Dependabot still owned most ecosystems. |
| 24 | + "prHourlyLimit": 2, |
| 25 | + "prConcurrentLimit": 5, |
| 26 | + |
| 27 | + // master plus 3.8.x, which is still live (last commit 2026-06-15). The older |
| 28 | + // maintenance branches are dormant - 3.7.x last moved 2025-03, 3.6.x 2024-08, |
| 29 | + // 3.5.x 2023-04 - so they are left out. |
| 30 | + "baseBranchPatterns": ["master", "3.8.x"], |
| 31 | + |
| 32 | + // Security PRs bypass the schedule and automerge when CI is green. |
| 33 | + "vulnerabilityAlerts": { |
30 | 34 | "enabled": true, |
| 35 | + "schedule": ["at any time"], |
| 36 | + "automerge": true, |
| 37 | + "automergeType": "pr", |
| 38 | + "labels": ["security"] |
31 | 39 | }, |
32 | 40 |
|
| 41 | + // MENDER_ARTIFACT_VERSION is pinned in two places in this repo. |
33 | 42 | "customManagers": [ |
| 43 | + // .gitlab-ci.yml, as a variable block with value: |
34 | 44 | { |
35 | 45 | "customType": "regex", |
36 | 46 | "managerFilePatterns": ["/.gitlab-ci.yml/"], |
|
42 | 52 | "extractVersionTemplate": "^v?(?<version>.*)$", |
43 | 53 | "versioningTemplate": "semver" |
44 | 54 | }, |
| 55 | + // .env, as a plain assignment |
45 | 56 | { |
46 | 57 | "customType": "regex", |
47 | 58 | "managerFilePatterns": ["/.env/"], |
|
52 | 63 | "datasourceTemplate": "github-releases", |
53 | 64 | "extractVersionTemplate": "^v?(?<version>.*)$", |
54 | 65 | "versioningTemplate": "semver" |
55 | | - }, |
| 66 | + } |
56 | 67 | ], |
57 | 68 |
|
58 | | - "prHourlyLimit": 0 |
| 69 | + "packageRules": [ |
| 70 | + // config:recommended pulls in :semanticPrefixFixDepsChoreOthers, which forces |
| 71 | + // semanticCommitType back to "chore" for any dep whose manager does not tag it |
| 72 | + // with an npm/pip style depType - that is every docker and compose dep here. |
| 73 | + // Must stay BEFORE the gitlabci rule: rules apply in order and the last match |
| 74 | + // wins, so gitlabci keeps its own type. |
| 75 | + { |
| 76 | + "matchPackageNames": ["*"], |
| 77 | + "semanticCommitType": "fix" |
| 78 | + }, |
| 79 | + |
| 80 | + // CI image bumps get ci: instead of fix(deps): |
| 81 | + { |
| 82 | + "matchManagers": ["gitlabci", "gitlabci-include"], |
| 83 | + "semanticCommitType": "ci", |
| 84 | + "semanticCommitScope": "" |
| 85 | + }, |
| 86 | + |
| 87 | + // Python: one PR for tests/requirements-python and extra/requirements.txt. |
| 88 | + { |
| 89 | + "matchManagers": ["pip_requirements"], |
| 90 | + "groupName": "python-dependencies", |
| 91 | + "groupSlug": "python-dependencies" |
| 92 | + }, |
| 93 | + |
| 94 | + // 17 docker-compose files at the root, so group them into one PR. Only literal |
| 95 | + // image tags are tracked - the ${MENDER_SERVER_*} ones are release tooling's job. |
| 96 | + { |
| 97 | + "matchManagers": ["docker-compose"], |
| 98 | + "groupName": "docker-compose", |
| 99 | + "groupSlug": "docker-compose" |
| 100 | + }, |
| 101 | + |
| 102 | + // extra/gitdm/gitdm is a third-party submodule Dependabot never updated either. |
| 103 | + { |
| 104 | + "matchManagers": ["git-submodules"], |
| 105 | + "enabled": false |
| 106 | + }, |
| 107 | + |
| 108 | + // No major bumps on the maintenance branch - that needs a backport decision. |
| 109 | + { |
| 110 | + "matchBaseBranches": ["/^\\d+\\.\\d+\\.x$/"], |
| 111 | + "matchUpdateTypes": ["major"], |
| 112 | + "enabled": false |
| 113 | + } |
| 114 | + ] |
59 | 115 | } |
0 commit comments