{"id":44317321,"url":"https://github.com/basher83/renovate-config","last_synced_at":"2026-02-11T05:15:13.040Z","repository":{"id":325604590,"uuid":"1101779186","full_name":"basher83/renovate-config","owner":"basher83","description":"My Renovate presets","archived":false,"fork":false,"pushed_at":"2025-12-14T13:35:12.000Z","size":210,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-14T15:20:24.795Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/basher83.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-22T08:10:46.000Z","updated_at":"2025-12-13T02:41:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/basher83/renovate-config","commit_stats":null,"previous_names":["basher83/renovate-config"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/basher83/renovate-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basher83%2Frenovate-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basher83%2Frenovate-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basher83%2Frenovate-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basher83%2Frenovate-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basher83","download_url":"https://codeload.github.com/basher83/renovate-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basher83%2Frenovate-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29327159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T03:52:29.695Z","status":"ssl_error","status_checked_at":"2026-02-11T03:52:23.094Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-11T05:15:12.226Z","updated_at":"2026-02-11T05:15:13.034Z","avatar_url":"https://github.com/basher83.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Renovate Shared Configuration\n\nCentralized Renovate presets for consistent dependency management across all repositories.\n\n## Quick Start\n\n**Basic projects:**\n\n```jsonc\n{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"local\u003ebasher83/renovate-config\"\n  ]\n}\n```\n\n**Python projects:**\n\n```jsonc\n{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"local\u003ebasher83/renovate-config\",\n    \"local\u003ebasher83/renovate-config//presets/python.json\"\n  ]\n}\n```\n\n**Docker projects:**\n\n```jsonc\n{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"local\u003ebasher83/renovate-config\",\n    \"local\u003ebasher83/renovate-config//presets/docker.json\"\n  ]\n}\n```\n\nSee [`examples/`](./examples/) for more configuration examples.\n\n---\n\n## Available Presets\n\nAll presets are in [`presets/`](./presets/):\n\n- **`default.json`** – Base preset (automatically included when extending `local\u003ebasher83/renovate-config`)\n  - Includes: shared global behavior (e.g., best‑practices, workarounds)\n  - Common settings: PR limits, semantic commits, labels, timezone, etc.\n\n- **`python.json`** – Python project defaults (auto-merge patches + dev minor updates, groups tooling)\n- **`python-mcp.json`** – MCP projects (Python 3.13 cap, MCP majors require approval, extends `python.json`)\n- **`docker.json`** – Docker security (digest pinning, auto-merge digests/patches and non‑critical minors)\n- **`github-actions-security.json`** – GitHub Actions security (digest pinning, selective automerge vs. approval)\n- **`mise.json`** – mise dev tools (grouped updates, auto-merge; runtimes handled in stack-specific presets)\n- **`ansible.json`** – Ansible collections (auto-merge patches, grouped minors, Python \u003c3.14.0 cap for mise)\n- **`terraform-tofu.json`** – Terraform/OpenTofu providers and modules\n- **`infrastructure.json`** – Comprehensive IaC preset\n- **`documentation.json`** – Documentation sites (aggressive auto-merge)\n\n\u003e Note: `mise.json` is now included globally in `default.json` for dev tools. Runtime caps (e.g., Python \u003c3.14.0)\n\u003e are handled in stack-specific presets like `python-mcp.json` or `ansible.json`.\n\n---\n\n## Documentation\n\n- **[Preset Management Strategy](./docs/preset-management.md)** – Guidelines for creating and organizing\n  presets, including the automerge mental model\n- **[Official Renovate Docs](./docs/offical-docs/)** – Reference documentation mirrors\n- **[Configuration Examples](./examples/)** – Real-world configuration examples\n\n---\n\n## Base Preset Features\n\nThe base preset (`default.json`) typically provides:\n\n- **PR Management**:\n  - Limit concurrent PRs.\n  - Limit creation rate (per hour) to avoid floods.\n- **Semantic Commits**:\n  - `chore(deps):` style commit messages.\n- **Labels \u0026 Assignees**:\n  - Default `renovate` label (can be extended per repo).\n  - Default assignee `basher83` (can be overridden per repo).\n- **Timezone**:\n  - `America/New_York` for schedules.\n- **Global Workarounds / Best Practices**:\n  - `config:best-practices` and `workarounds:all` as a baseline.\n\nSpecific details may evolve; always check `presets/default.json` for the canonical configuration.\n\n---\n\n## Automerge Mental Model (Important)\n\nAcross all presets, automerge is designed to follow a simple mental model:\n\n1. **Safe changes auto‑merge via PR**\n   - Examples:\n     - Patch updates for most libraries.\n     - Dev/test tooling (pytest, linters, type stubs).\n     - Docker \u0026 Actions digest updates.\n     - Non‑critical Docker minors.\n   - Configured with `automerge: true` (and usually no `automergeType` override).\n\n2. **Risky changes require attention**\n   - Examples:\n     - Major library updates.\n     - MCP and `zammad-py` majors.\n     - Sensitive GitHub Actions minors/majors.\n     - Critical Docker image minors/majors.\n   - Either:\n     - No `automerge` rule (PR stays open), or\n     - `dependencyDashboardApproval: true` (requires explicit dashboard approval).\n\n3. **Branch vs PR automerge**\n   - `automerge: true` + `automergeType: \"branch\"`:\n     - Updates only the Renovate branch, **does not merge the PR**.\n     - We avoid this for “invisible” maintenance flows.\n   - `automerge: true` with default `automergeType` (PR):\n     - PR is merged into the base branch when checks pass.\n     - PR closes → ideal for “no visible PR” safe updates.\n\n4. **Branch protection + required checks are the gate**\n   - We rely on:\n     - Required status checks (e.g. tests + security scans).\n     - No required approvals where we want Renovate to auto‑merge.\n   - Renovate only automerges when these conditions are met.\n\nFor a deeper explanation with examples (e.g., `Zammad-MCP`), see\n**[Preset Management Strategy](./docs/preset-management.md)**.\n\n---\n\n## Preset Philosophy\n\nPresets follow a simple rule:\n\n\u003e If it’s used universally and is safe, include it in `default.json`.\n\u003e Otherwise, make it an **optional preset** and extend it only where needed.\n\n- **Global presets** (in `default.json`): very conservative, universal behavior.\n- **Optional presets**: technology‑ or project‑specific behavior (Python, Docker, Actions, Terraform, etc.).\n\nSee [Preset Management Strategy](./docs/preset-management.md) for detailed guidelines and the current global vs optional list.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasher83%2Frenovate-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasher83%2Frenovate-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasher83%2Frenovate-config/lists"}