diff --git a/renovate.jsonc b/renovate.jsonc index 32e6384..121719e 100644 --- a/renovate.jsonc +++ b/renovate.jsonc @@ -20,6 +20,35 @@ "extends": ["config:recommended", ":dependencyDashboard"], "timezone": "Europe/Warsaw", + // ОБЛАСТЬ. Прогон вхолостую 10.09.2026 показал, что без этих двух ключей + // Renovate в прикладной репе лезет сильно дальше, чем задумано. + // + // enabledManagers: без списка их подхватывается полтора десятка. На + // cars-system это дало `html` (16 файлов вёрстки в _legacy), `pyenv` + // (.python-version — это смена рантайма, а не зависимости), плюс `poetry` + // и `pixi`, которые лезут в тот же backend/pyproject.toml, что и pep621. + "enabledManagers": [ + "docker-compose", + "dockerfile", + "npm", + "bun", + "pep621", + "pip_requirements", + "gomod", + "github-actions" + ], + // ignorePaths: в репах приложений рядом с рабочим compose лежит ещё и + // caddy/docker-compose.yml. Это ГРАНИЦА — `ghcr.io/caddybuilds/caddy-cloudflare`, + // а граница из схемы исключена намеренно, ей нужен не лаг, а хелсчек с + // автооткатом (docs/image-updates.md §6). В infra/komodo это делает + // includePaths, здесь — вот эта строчка. Заодно выкидываем мёртвый + // _legacy и compose для дев-воркtree, который никто не разворачивает. + "ignorePaths": [ + "**/caddy/**", + "_legacy/**", + "**/docker-compose.worktree.yml" + ], + // Дайджест: тег в compose остаётся для читаемости, разворачивается всегда // один и тот же образ. "pinDigests": true, @@ -49,6 +78,14 @@ "matchUpdateTypes": ["patch", "minor", "digest", "pinDigest"], "automerge": true }, + { + "description": + "Docker: первичный пиннинг дайджеста — ОТДЕЛЬНОЙ веткой. `groupName: null` здесь обязателен: у Renovate есть встроенная группа «Pin dependencies», и без этой строчки docker-пины уезжают в один PR вместе с npm-пинами. Группа берёт самый строгий automerge из своих участников, то есть докер молча переставал мёржиться сам — поймано прогоном вхолостую на placebot, где в pin-dependencies лежали python и caddy-cloudflare вперемешку с фронтовыми пакетами.", + "matchDatasources": ["docker"], + "matchUpdateTypes": ["pin", "pinDigest"], + "groupName": null, + "automerge": true + }, { "description": "Docker: мажор руками. Аппрув в дашборде, PR не создаётся.", "matchDatasources": ["docker"], @@ -92,7 +129,7 @@ "description": "ЗАВИСИМОСТИ КОДА (npm, pip, go.mod, экшены и прочее не-docker): PR собираем, автомёрдж НЕ включаем — решение Бобра от 10.09.2026, первый заход без него, чтобы сначала посмотреть на объём. Сгруппированы в один PR намеренно: иначе они по одному займут весь prConcurrentLimit и вытеснят docker-обновления, а те как раз едут сами.", "matchDatasources": ["!docker"], - "matchUpdateTypes": ["patch", "minor", "digest", "pinDigest"], + "matchUpdateTypes": ["pin", "patch", "minor", "digest", "pinDigest"], "groupName": "зависимости кода", "automerge": false, "addLabels": ["deps-code"]