chore: simplify renovate config to rely on auto-discovery

Drop the generate-renovate.sh generator and explicit fileMatch lists.
Renovate auto-discovers docker-compose, values.yaml and Chart.yaml via
the docker-compose, helm-values and helmv3 managers. Use helmv3 (not
helm-requirements) for Chart.yaml dependencies (Helm v3).
This commit is contained in:
2026-08-26 19:58:55 +02:00
committed by vhaudiquet
parent 3774c8ef7e
commit 74f404b6c9
3 changed files with 5 additions and 178 deletions
-5
View File
@@ -6,11 +6,6 @@ repos:
entry: .pre-commit-sops.sh
language: script
pass_filenames: true
- id: generate-renovate
name: generate renovate
entry: generate-renovate.sh
language: script
pass_filenames: false
- id: generate-docker-swarmcd
name: generate docker swarmcd
entry: generate-docker-swarmcd.sh
-74
View File
@@ -1,74 +0,0 @@
#!/bin/bash
set -euo pipefail
# Regenerate renovate.json from the on-disk docker/kubernetes layout.
tmpfile=$(mktemp)
# Make sure to cleanup our temp file on any kind of exit
trap 'rm -f "$tmpfile"' EXIT
python3 - "$tmpfile" <<'PY'
import json
import os
import subprocess
import sys
def discover(root, filename):
"""Sorted directories under root containing filename."""
out = subprocess.run(
["find", root, "-name", filename],
capture_output=True,
text=True,
check=True,
).stdout
return sorted(
{os.path.dirname(line).removeprefix("./") for line in out.splitlines() if line}
)
def file_match(directory, filename):
return "^%s/%s$" % (directory, filename.replace(".", "[.]"))
docker_dirs = discover("docker", "docker-compose.yml")
helm_dirs = discover("kubernetes", "release.yaml")
renovate = {
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"schedule": ["every weekend"],
"prConcurrentLimit": 15,
"enabledManagers": ["docker-compose", "helm-requirements", "helm-values"],
"packageRules": [
{
"description": "docker-compose updates",
"matchManagers": ["docker-compose"],
"commitMessage": "docker(deps): bump {{{depName}}} in {{{packageFile}}}",
},
{
"description": "helm updates",
"matchManagers": ["helm-requirements", "helm-values"],
"commitMessage": "kube(deps): bump {{{depName}}} in {{{packageFile}}}",
},
],
"docker-compose": {
"fileMatch": [file_match(d, "docker-compose.yml") for d in docker_dirs]
},
"helm-requirements": {"fileMatch": [file_match(d, "Chart.yaml") for d in helm_dirs]},
"helm-values": {"fileMatch": [file_match(d, "values.yaml") for d in helm_dirs]},
}
with open(sys.argv[1], "w") as f:
json.dump(renovate, f, indent=2)
f.write("\n")
PY
# Overwrite file on change
if ! [ -f renovate.json ] || ! cmp -s "$tmpfile" renovate.json; then
mv "$tmpfile" renovate.json
echo "Updated renovate.json!"
git add "renovate.json"
else
echo "No changes to renovate.json."
fi
+5 -99
View File
@@ -6,8 +6,8 @@
"prConcurrentLimit": 15,
"enabledManagers": [
"docker-compose",
"helm-requirements",
"helm-values"
"helm-values",
"helmv3"
],
"packageRules": [
{
@@ -20,104 +20,10 @@
{
"description": "helm updates",
"matchManagers": [
"helm-requirements",
"helm-values"
"helm-values",
"helmv3"
],
"commitMessage": "kube(deps): bump {{{depName}}} in {{{packageFile}}}"
}
],
"docker-compose": {
"fileMatch": [
"^docker/home/esphome/docker-compose[.]yml$",
"^docker/home/mosquitto-mqtt/docker-compose[.]yml$",
"^docker/home/n8n/docker-compose[.]yml$",
"^docker/home/node-red/docker-compose[.]yml$",
"^docker/home/zigbee2mqtt/docker-compose[.]yml$",
"^docker/infrastructure/mail/roundcube/docker-compose[.]yml$",
"^docker/infrastructure/network/traefik/docker-compose[.]yml$",
"^docker/infrastructure/observability/docker-compose[.]yml$",
"^docker/infrastructure/squid/docker-compose[.]yml$",
"^docker/personal/fireshare/docker-compose[.]yml$",
"^docker/personal/gramps/docker-compose[.]yml$",
"^docker/personal/media/films-series/jackett/docker-compose[.]yml$",
"^docker/personal/media/films-series/jellyfin/docker-compose[.]yml$",
"^docker/personal/media/films-series/jellyseerr/docker-compose[.]yml$",
"^docker/personal/media/films-series/radarr/docker-compose[.]yml$",
"^docker/personal/media/films-series/sonarr/docker-compose[.]yml$",
"^docker/personal/media/films-series/transmission/docker-compose[.]yml$",
"^docker/personal/media/films-series/wizarr/docker-compose[.]yml$",
"^docker/personal/media/music/navidrome/docker-compose[.]yml$",
"^docker/personal/media/youtube/tubearchivist/docker-compose[.]yml$",
"^docker/personal/radicale/docker-compose[.]yml$",
"^docker/personal/syncthing/docker-compose[.]yml$",
"^docker/personal/tandoor/docker-compose[.]yml$",
"^docker/production/alexscript/docker-compose[.]yml$",
"^docker/tools/excalidraw/docker-compose[.]yml$",
"^docker/tools/stirling-pdf/docker-compose[.]yml$"
]
},
"helm-requirements": {
"fileMatch": [
"^kubernetes/dev/gitea/Chart[.]yaml$",
"^kubernetes/dev/harbor/Chart[.]yaml$",
"^kubernetes/home/home-assistant/Chart[.]yaml$",
"^kubernetes/home/zigbee2mqtt/Chart[.]yaml$",
"^kubernetes/infrastructure/authentik/Chart[.]yaml$",
"^kubernetes/infrastructure/caddy/Chart[.]yaml$",
"^kubernetes/infrastructure/cert-manager/Chart[.]yaml$",
"^kubernetes/infrastructure/cert-manager-webhook-ovh/Chart[.]yaml$",
"^kubernetes/infrastructure/mail/stalwart/Chart[.]yaml$",
"^kubernetes/infrastructure/network/blocky/Chart[.]yaml$",
"^kubernetes/infrastructure/traefik/Chart[.]yaml$",
"^kubernetes/personal/media/photoprism/Chart[.]yaml$",
"^kubernetes/personal/notes/notesnook/Chart[.]yaml$",
"^kubernetes/personal/notes/obsidian-livesync/Chart[.]yaml$",
"^kubernetes/personal/paperless/Chart[.]yaml$",
"^kubernetes/personal/radicale/Chart[.]yaml$",
"^kubernetes/production/buildpath/Chart[.]yaml$",
"^kubernetes/production/semery-fr/Chart[.]yaml$",
"^kubernetes/production/umami/Chart[.]yaml$",
"^kubernetes/production/vhaudiquet-fr/Chart[.]yaml$",
"^kubernetes/system/coredns/Chart[.]yaml$",
"^kubernetes/system/csi-driver-nfs/Chart[.]yaml$",
"^kubernetes/system/external-dns/Chart[.]yaml$",
"^kubernetes/system/longhorn/Chart[.]yaml$",
"^kubernetes/system/openclaw-operator/Chart[.]yaml$",
"^kubernetes/utilities/dashy/Chart[.]yaml$",
"^kubernetes/utilities/glance/Chart[.]yaml$",
"^kubernetes/utilities/open-webui/Chart[.]yaml$"
]
},
"helm-values": {
"fileMatch": [
"^kubernetes/dev/gitea/values[.]yaml$",
"^kubernetes/dev/harbor/values[.]yaml$",
"^kubernetes/home/home-assistant/values[.]yaml$",
"^kubernetes/home/zigbee2mqtt/values[.]yaml$",
"^kubernetes/infrastructure/authentik/values[.]yaml$",
"^kubernetes/infrastructure/caddy/values[.]yaml$",
"^kubernetes/infrastructure/cert-manager/values[.]yaml$",
"^kubernetes/infrastructure/cert-manager-webhook-ovh/values[.]yaml$",
"^kubernetes/infrastructure/mail/stalwart/values[.]yaml$",
"^kubernetes/infrastructure/network/blocky/values[.]yaml$",
"^kubernetes/infrastructure/traefik/values[.]yaml$",
"^kubernetes/personal/media/photoprism/values[.]yaml$",
"^kubernetes/personal/notes/notesnook/values[.]yaml$",
"^kubernetes/personal/notes/obsidian-livesync/values[.]yaml$",
"^kubernetes/personal/paperless/values[.]yaml$",
"^kubernetes/personal/radicale/values[.]yaml$",
"^kubernetes/production/buildpath/values[.]yaml$",
"^kubernetes/production/semery-fr/values[.]yaml$",
"^kubernetes/production/umami/values[.]yaml$",
"^kubernetes/production/vhaudiquet-fr/values[.]yaml$",
"^kubernetes/system/coredns/values[.]yaml$",
"^kubernetes/system/csi-driver-nfs/values[.]yaml$",
"^kubernetes/system/external-dns/values[.]yaml$",
"^kubernetes/system/longhorn/values[.]yaml$",
"^kubernetes/system/openclaw-operator/values[.]yaml$",
"^kubernetes/utilities/dashy/values[.]yaml$",
"^kubernetes/utilities/glance/values[.]yaml$",
"^kubernetes/utilities/open-webui/values[.]yaml$"
]
}
]
}