{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:recommended", "helpers:pinGitHubActionDigests", ":semanticCommits", ":dependencyDashboard", ":enableVulnerabilityAlertsWithLabel(security)", "docker:pinDigests" ], "timezone": "Europe/Vienna", "schedule": [ "before 6am on monday" ], "labels": [ "dependencies" ], "prHourlyLimit": 4, "prConcurrentLimit": 6, "packageRules": [ { "description": "Synapse upstream — major bumps are breaking, keep manual", "matchPackageNames": [ "ghcr.io/element-hq/synapse" ], "groupName": "Synapse", "commitMessageTopic": "Synapse", "commitMessagePrefix": "feat:", "labels": [ "upstream-bump", "synapse" ] }, { "description": "Element Web upstream", "matchPackageNames": [ "vectorim/element-web" ], "groupName": "Element Web", "commitMessageTopic": "Element Web", "commitMessagePrefix": "feat:", "labels": [ "upstream-bump", "element" ] }, { "description": "Ketesa (admin UI, formerly Synapse-Admin) upstream", "matchPackageNames": [ "ghcr.io/etkecc/ketesa" ], "groupName": "Ketesa", "commitMessageTopic": "Ketesa", "commitMessagePrefix": "feat:", "labels": [ "upstream-bump", "synapse-admin" ] }, { "description": "Matrix Authentication Service — auth is load-bearing, keep manual", "matchPackageNames": [ "ghcr.io/element-hq/matrix-authentication-service" ], "groupName": "MAS", "commitMessageTopic": "Matrix Authentication Service", "commitMessagePrefix": "feat:", "labels": [ "upstream-bump", "mas" ] }, { "description": "The upstream images are referenced as FROM image:${VERSION}, where Renovate can raise the tag in the ARG but has nowhere to write a digest", "matchPackageNames": [ "ghcr.io/element-hq/synapse", "vectorim/element-web", "ghcr.io/etkecc/ketesa", "ghcr.io/element-hq/matrix-authentication-service" ], "pinDigests": false }, { "description": "s6-overlay — auto-merge minor/patch (build tool, low risk)", "matchPackageNames": [ "just-containers/s6-overlay" ], "groupName": "s6-overlay", "matchUpdateTypes": [ "minor", "patch" ], "automerge": true, "automergeType": "branch", "commitMessagePrefix": "chore:", "labels": [ "build-tool" ] }, { "description": "GitHub Actions: auto-merge minor/patch/digest", "matchManagers": [ "github-actions" ], "matchUpdateTypes": [ "minor", "patch", "digest" ], "automerge": true, "automergeType": "branch", "commitMessagePrefix": "ci:", "labels": [ "github-actions" ] }, { "description": "GitHub Actions major: manual PRs", "matchManagers": [ "github-actions" ], "matchUpdateTypes": [ "major" ], "commitMessagePrefix": "ci:", "labels": [ "github-actions", "major-update" ] }, { "description": "Docker: auto-merge digest pins and digest refreshes (same tag, new build). Major/minor stay open for review.", "matchManagers": [ "dockerfile", "docker-compose" ], "matchUpdateTypes": [ "pinDigest", "digest" ], "automerge": true, "automergeType": "pr", "platformAutomerge": true, "commitMessagePrefix": "ci:", "labels": [ "docker" ] }, { "description": "Python packages pinned on top of the Synapse image move together", "matchDatasources": [ "pypi" ], "groupName": "Python packages", "labels": [ "python-packages" ] }, { "description": "The compose file is for people to copy, so it follows the app's own latest tag instead of a digest that goes stale every build", "matchManagers": ["docker-compose"], "matchPackageNames": ["junkerderprovinz/matrix"], "enabled": false } ], "customManagers": [ { "customType": "regex", "description": "Track Synapse version from ARG SYNAPSE_VERSION=", "managerFilePatterns": [ "/(^|/)Dockerfile$/" ], "matchStrings": [ "ARG SYNAPSE_VERSION=(?v[^\\s]+)" ], "depNameTemplate": "ghcr.io/element-hq/synapse", "datasourceTemplate": "docker" }, { "customType": "regex", "description": "Track Element Web version from ARG ELEMENT_VERSION=", "managerFilePatterns": [ "/(^|/)Dockerfile$/" ], "matchStrings": [ "ARG ELEMENT_VERSION=(?v[^\\s]+)" ], "depNameTemplate": "vectorim/element-web", "datasourceTemplate": "docker" }, { "customType": "regex", "description": "Track Ketesa (admin UI) version from ARG SYNAPSE_ADMIN_VERSION=. Must stay a Docker datasource pointing at the image the Dockerfile actually pulls — tracking the GitHub repo instead would offer tags that do not exist on the registry.", "managerFilePatterns": [ "/(^|/)Dockerfile$/" ], "matchStrings": [ "ARG SYNAPSE_ADMIN_VERSION=(?v[^\\s]+)" ], "depNameTemplate": "ghcr.io/etkecc/ketesa", "datasourceTemplate": "docker" }, { "customType": "regex", "description": "Track Matrix Authentication Service version from ARG MAS_VERSION=", "managerFilePatterns": [ "/(^|/)Dockerfile$/" ], "matchStrings": [ "ARG MAS_VERSION=(?[^\\s]+)" ], "depNameTemplate": "ghcr.io/element-hq/matrix-authentication-service", "datasourceTemplate": "docker" }, { "customType": "regex", "description": "Track s6-overlay version from ARG S6_OVERLAY_VERSION=", "managerFilePatterns": [ "/(^|/)Dockerfile$/" ], "matchStrings": [ "ARG S6_OVERLAY_VERSION=(?[^\\s]+)" ], "depNameTemplate": "just-containers/s6-overlay", "datasourceTemplate": "github-releases", "extractVersionTemplate": "^v?(?.+)$" }, { "customType": "regex", "description": "Python packages pinned in ARG lines that follow a renovate comment", "managerFilePatterns": [ "/(^|/)Dockerfile$/" ], "matchStrings": [ "# renovate: datasource=(?[^\\s]+) depName=(?[^\\s]+)\\nARG \\w+=(?[^\\s]+)" ] } ] }