{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"enabledManagers": ["custom.regex"],
"semanticCommits": "enabled",
"semanticCommitType": "build",
"customManagers": [
{
"customType": "regex",
"description": "Tool Versions in role defaults, each driven by its own `# renovate:` annotation",
"managerFilePatterns": ["/^ansible/roles/[^/]+/defaults/main\\.yml$/"],
"matchStrings": [
"# renovate: datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)(?: versioning=(?<versioning>\\S+))?(?: extractVersion=(?<extractVersion>\\S+))?\\n[a-z0-9_]+_version: \"?(?<currentValue>[^\"\\n]+)\"?\\n"
]
},
{
"customType": "regex",
"description": "App Versions declared as typed `version:` blocks in Playbook Meta (ADR-0017)",
"managerFilePatterns": ["/^ansible/playbooks/[^/]+\\.meta\\.yml$/"],
"matchStrings": [
"version:\\n value: \"?(?<currentValue>[^\"\\n]+)\"?\\n datasource: (?<datasource>\\S+)\\n depName: \"?(?<depName>[^\"\\n]+)\"?\\n(?: versioning: (?<versioning>\\S+)\\n)?(?: extractVersion: \"?(?<extractVersion>[^\"\\n]+)\"?\\n)?"
]
}
],
"packageRules": [
{
"matchManagers": ["custom.regex"],
"description": "`build` so release-plz cuts a release (ADR-0017). Must live in a packageRule: config:recommended pulls in :semanticPrefixFixDepsChoreOthers, whose own packageRules override any top-level semanticCommitType.",
"semanticCommitType": "build",
"semanticCommitScope": "{{replace 'ansible/roles/(.+)/defaults/main\\.yml' '$1' packageFile}}",
"commitMessageAction": "bump",
"commitMessageTopic": "",
"commitMessageExtra": "to {{newValue}}"
},
{
"matchFileNames": ["ansible/playbooks/*.meta.yml"],
"semanticCommitScope": "{{replace 'ansible/playbooks/(.+)\\.meta\\.yml' '$1' packageFile}}"
},
{
"description": "hermes_uv_version and tgtg_uv_version are the same dep and must move together",
"matchDepNames": ["astral-sh/uv"],
"groupName": "uv",
"semanticCommitScope": "uv"
},
{
"description": "headscale refuses to start when a deploy skips a minor: upstream enforces a strict upgrade path (juanfont/headscale#3083) because it deletes old DB migrations each minor (0.28.0 dropped pre-0.25, 0.29.0 dropped pre-0.28). One PR per minor stream yields the required ladder instead of a single multi-minor jump. Merge them one rung at a time — the option separates the PRs but does not serialize them, and `separateMultipleMinor` is experimental in Renovate.",
"matchDepNames": ["juanfont/headscale"],
"separateMultipleMinor": true
},
{
"description": "grimmory is auberge's own build output (build-grimmory.yml), not a dependency",
"matchDepNames": ["sripwoud/auberge"],
"enabled": false
}
]
}