mirror of
https://github.com/vhaudiquet/homeprod.git
synced 2026-09-11 11:41:14 +00:00
chore: migrate from Dependabot to Renovate
This commit is contained in:
@@ -1,72 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "docker-compose"
|
||||
open-pull-requests-limit: 15
|
||||
schedule:
|
||||
interval: weekly
|
||||
commit-message:
|
||||
prefix: "docker"
|
||||
include: "scope"
|
||||
directories:
|
||||
- "/docker/home/esphome"
|
||||
- "/docker/home/mosquitto-mqtt"
|
||||
- "/docker/home/n8n"
|
||||
- "/docker/home/node-red"
|
||||
- "/docker/home/zigbee2mqtt"
|
||||
- "/docker/infrastructure/mail/roundcube"
|
||||
- "/docker/infrastructure/network/traefik"
|
||||
- "/docker/infrastructure/observability"
|
||||
- "/docker/infrastructure/squid"
|
||||
- "/docker/personal/fireshare"
|
||||
- "/docker/personal/gramps"
|
||||
- "/docker/personal/media/films-series/jackett"
|
||||
- "/docker/personal/media/films-series/jellyfin"
|
||||
- "/docker/personal/media/films-series/jellyseerr"
|
||||
- "/docker/personal/media/films-series/radarr"
|
||||
- "/docker/personal/media/films-series/sonarr"
|
||||
- "/docker/personal/media/films-series/transmission"
|
||||
- "/docker/personal/media/films-series/wizarr"
|
||||
- "/docker/personal/media/music/navidrome"
|
||||
- "/docker/personal/media/youtube/tubearchivist"
|
||||
- "/docker/personal/radicale"
|
||||
- "/docker/personal/syncthing"
|
||||
- "/docker/personal/tandoor"
|
||||
- "/docker/production/alexscript"
|
||||
- "/docker/tools/excalidraw"
|
||||
- "/docker/tools/stirling-pdf"
|
||||
- package-ecosystem: "helm"
|
||||
open-pull-requests-limit: 15
|
||||
schedule:
|
||||
interval: weekly
|
||||
commit-message:
|
||||
prefix: "kube"
|
||||
include: "scope"
|
||||
directories:
|
||||
- "/kubernetes/dev/gitea"
|
||||
- "/kubernetes/dev/harbor"
|
||||
- "/kubernetes/home/home-assistant"
|
||||
- "/kubernetes/home/zigbee2mqtt"
|
||||
- "/kubernetes/infrastructure/authentik"
|
||||
- "/kubernetes/infrastructure/caddy"
|
||||
- "/kubernetes/infrastructure/cert-manager"
|
||||
- "/kubernetes/infrastructure/cert-manager-webhook-ovh"
|
||||
- "/kubernetes/infrastructure/mail/stalwart"
|
||||
- "/kubernetes/infrastructure/network/blocky"
|
||||
- "/kubernetes/infrastructure/traefik"
|
||||
- "/kubernetes/personal/media/photoprism"
|
||||
- "/kubernetes/personal/notes/notesnook"
|
||||
- "/kubernetes/personal/notes/obsidian-livesync"
|
||||
- "/kubernetes/personal/paperless"
|
||||
- "/kubernetes/personal/radicale"
|
||||
- "/kubernetes/production/buildpath"
|
||||
- "/kubernetes/production/semery-fr"
|
||||
- "/kubernetes/production/umami"
|
||||
- "/kubernetes/production/vhaudiquet-fr"
|
||||
- "/kubernetes/system/coredns"
|
||||
- "/kubernetes/system/csi-driver-nfs"
|
||||
- "/kubernetes/system/external-dns"
|
||||
- "/kubernetes/system/longhorn"
|
||||
- "/kubernetes/system/openclaw-operator"
|
||||
- "/kubernetes/utilities/dashy"
|
||||
- "/kubernetes/utilities/glance"
|
||||
- "/kubernetes/utilities/open-webui"
|
||||
@@ -6,9 +6,9 @@ repos:
|
||||
entry: .pre-commit-sops.sh
|
||||
language: script
|
||||
pass_filenames: true
|
||||
- id: generate-dependabot
|
||||
name: generate dependabot
|
||||
entry: generate-dependabot.sh
|
||||
- id: generate-renovate
|
||||
name: generate renovate
|
||||
entry: generate-renovate.sh
|
||||
language: script
|
||||
pass_filenames: false
|
||||
- id: generate-docker-swarmcd
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Create .github directory if needed
|
||||
if [ ! -d .github ]; then
|
||||
mkdir -p .github
|
||||
fi
|
||||
|
||||
tmpfile=$(mktemp)
|
||||
|
||||
# Make sure to cleanup our temp file on any kind of exit
|
||||
trap 'rm -f "$tmpfile"' EXIT
|
||||
|
||||
# dependabot.yml docker header
|
||||
cat > "$tmpfile" <<'YAML'
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "docker-compose"
|
||||
open-pull-requests-limit: 15
|
||||
schedule:
|
||||
interval: weekly
|
||||
commit-message:
|
||||
prefix: "docker"
|
||||
include: "scope"
|
||||
directories:
|
||||
YAML
|
||||
|
||||
# Find and sort all docker-compose.yml directories
|
||||
find docker -name 'docker-compose.yml' -print0 \
|
||||
| xargs -0 -n1 dirname \
|
||||
| sed 's|^\./||' \
|
||||
| sort \
|
||||
| while read -r dir; do
|
||||
echo " - \"/$dir\"" >> "$tmpfile"
|
||||
done
|
||||
|
||||
# dependabot.yml helm header
|
||||
cat >> "$tmpfile" <<'YAML'
|
||||
- package-ecosystem: "helm"
|
||||
open-pull-requests-limit: 15
|
||||
schedule:
|
||||
interval: weekly
|
||||
commit-message:
|
||||
prefix: "kube"
|
||||
include: "scope"
|
||||
directories:
|
||||
YAML
|
||||
|
||||
# Find and sort all release.yaml directories
|
||||
find kubernetes -name 'release.yaml' -print0 \
|
||||
| xargs -0 -n1 dirname \
|
||||
| sed 's|^\./||' \
|
||||
| sort \
|
||||
| while read -r dir; do
|
||||
echo " - \"/$dir\"" >> "$tmpfile"
|
||||
done
|
||||
|
||||
# Overwrite file on change
|
||||
if ! [ -f .github/dependabot.yml ] || ! cmp -s "$tmpfile" .github/dependabot.yml; then
|
||||
mv "$tmpfile" .github/dependabot.yml
|
||||
echo "Updated .github/dependabot.yml!"
|
||||
git add ".github/dependabot.yml"
|
||||
else
|
||||
echo "No changes to .github/dependabot.yml."
|
||||
fi
|
||||
Executable
+74
@@ -0,0 +1,74 @@
|
||||
#!/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
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"$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": [
|
||||
"^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$"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user