Compare commits

..

2 Commits

Author SHA1 Message Date
admin a47111cce1 renovate: termix customManager — use regex versioning instead of loose+extractVersion
Third attempt. Debug run confirmed `loose` + `extractVersion` STILL produces:

  DEBUG: Dependency Termix-SSH/Termix has unsupported/unversioned value
         release-1.11.0 (versioning=loose)
  DEBUG: Skipping Termix-SSH/Termix because no currentDigest or pinDigests

`extractVersion` is only applied to CANDIDATE versions (from the datasource),
not to currentValue. Renovate's pre-validation runs the raw `release-1.11.0`
through `loose`, which can't parse it (the `release-` prefix breaks semver
detection), so Renovate falls back to digest-only and gives up.

`regex` versioning is the only mode that parses the prefixed value directly
(no extractVersion needed) — Renovate's regex.matches() accepts `release-1.11.0`
because the rule's pattern captures the whole tag. github-releases datasource
returns the upstream `release-X.Y.Z` tag_names which the same regex parses.
No conversion needed; the new tag written back to the manifest is the same
`release-X.Y.Z` form, valid in the ghcr.io/lukegus/termix registry.

Removes extractVersionTemplate (no longer needed).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 10:03:54 +02:00
admin c5bbe3d17f renovate: termix via customManagers (kubernetes manager doesn't honor inline comments)
The previous attempt (inline `# renovate:` comment in termix.yaml) silently
did nothing -- after merge + manual run, the dashboard's
`termix-system/termix.yaml (2)` was the resource count (Deployment +
Ingress), not detected updates. No PRs opened, no termix branches, no
queue entries anywhere.

Root cause: Renovate's `kubernetes` manager does NOT process inline
`# renovate:` comments. Those work for dockerfile/flux/helmfile/github-
actions/helm-values/etc., but kubernetes is missing from that list.

Correct fix: a `customManagers.regex` entry that extracts termix's image
directly with the right datasource/versioning/extractVersion set at
EXTRACTION time -- before any docker-version pre-check can reject the
prefixed tag. Plus a packageRule disabling the kubernetes manager for
termix so it doesn't silently skip the dep and clutter the dashboard.

Changes:
  - admin-system/renovate.yaml:
    * enabledManagers += "custom.regex"
    * customManagers: termix.yaml regex extraction -> github-releases
      datasource on Termix-SSH/Termix with `extractVersion=^release-(?<version>.+)$`
    * packageRules: disable kubernetes manager for ghcr.io/lukegus/termix
  - termix-system/termix.yaml: drop the useless inline comment, leave a
    NOTE explaining where the actual config lives.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 09:42:12 +02:00
17 changed files with 45 additions and 23 deletions
+20 -1
View File
@@ -46,10 +46,23 @@ data:
"dependencyDashboardTitle": "Renovate Dependency Dashboard", "dependencyDashboardTitle": "Renovate Dependency Dashboard",
"prHourlyLimit": 16, "prHourlyLimit": 16,
"prConcurrentLimit": 16, "prConcurrentLimit": 16,
"enabledManagers": ["kubernetes", "helm-values"], "enabledManagers": ["kubernetes", "helm-values", "custom.regex"],
"kubernetes": { "kubernetes": {
"managerFilePatterns": ["/.+\\.ya?ml$/"] "managerFilePatterns": ["/.+\\.ya?ml$/"]
}, },
"customManagers": [
{
"description": "termix uses a release-X.Y.Z prefixed tag. extractVersion + loose doesn't work because Renovate validates the raw currentValue BEFORE applying extractVersion. Using regex versioning (which parses the prefixed value directly) sidesteps the pre-check. Datasource redirected to GitHub Releases at Termix-SSH/Termix so the 3-day stability gate has real timestamps to work with.",
"customType": "regex",
"managerFilePatterns": ["/termix-system/.+\\.ya?ml$/"],
"matchStrings": [
"image:\\s+(?<depName>ghcr\\.io/lukegus/termix):(?<currentValue>release-\\d+\\.\\d+\\.\\d+)"
],
"datasourceTemplate": "github-releases",
"packageNameTemplate": "Termix-SSH/Termix",
"versioningTemplate": "regex:^release-(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)$"
}
],
"packageRules": [ "packageRules": [
{ {
"description": "All apps: 3-day stability gate before any PR opens", "description": "All apps: 3-day stability gate before any PR opens",
@@ -94,6 +107,12 @@ data:
"description": "wanderer: db + web update together in one PR", "description": "wanderer: db + web update together in one PR",
"matchPackageNames": ["flomp/wanderer-db", "flomp/wanderer-web"], "matchPackageNames": ["flomp/wanderer-db", "flomp/wanderer-web"],
"groupName": "wanderer" "groupName": "wanderer"
},
{
"description": "termix: kubernetes manager would extract the image with versioning=docker and silently skip it (release-1.11.0 fails the docker pre-check). Disable that extraction; customManagers above does the real work via github-releases.",
"matchManagers": ["kubernetes"],
"matchPackageNames": ["ghcr.io/lukegus/termix"],
"enabled": false
} }
], ],
"labels": ["renovate"] "labels": ["renovate"]
+1 -1
View File
@@ -50,7 +50,7 @@ spec:
fsGroup: 1000 fsGroup: 1000
containers: containers:
- name: code-server - name: code-server
image: codercom/code-server:4.122.1 image: codercom/code-server:4.121.0
args: args:
- --bind-addr=0.0.0.0:8080 - --bind-addr=0.0.0.0:8080
- --auth=none - --auth=none
+1 -1
View File
@@ -48,7 +48,7 @@ spec:
fsGroup: 999 fsGroup: 999
containers: containers:
- name: healthchecks - name: healthchecks
image: healthchecks/healthchecks:v4.2 image: healthchecks/healthchecks:v4.0
ports: ports:
- containerPort: 8000 - containerPort: 8000
env: env:
+1 -1
View File
@@ -2746,7 +2746,7 @@ spec:
fsGroup: 1000 fsGroup: 1000
initContainers: initContainers:
- name: build-bookmarks-index - name: build-bookmarks-index
image: mikefarah/yq:4.53.2 image: mikefarah/yq:4.50.1
securityContext: securityContext:
runAsUser: 1000 runAsUser: 1000
runAsGroup: 1000 runAsGroup: 1000
+1 -1
View File
@@ -1372,7 +1372,7 @@ spec:
fsGroup: 1000 fsGroup: 1000
initContainers: initContainers:
- name: build-bookmarks-index - name: build-bookmarks-index
image: mikefarah/yq:4.53.2 image: mikefarah/yq:4.50.1
securityContext: securityContext:
runAsUser: 1000 runAsUser: 1000
runAsGroup: 1000 runAsGroup: 1000
+2 -2
View File
@@ -123,7 +123,7 @@ initContainer:
registry: index.docker.io registry: index.docker.io
repository: alpine repository: alpine
# -- If unset use latest # -- If unset use latest
tag: "3.23" tag: "3.22"
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@@ -181,7 +181,7 @@ rclone:
registry: index.docker.io registry: index.docker.io
repository: rclone/rclone repository: rclone/rclone
# -- If unset use latest # -- If unset use latest
tag: 1.74.2 tag: 1.70.3
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
+1 -1
View File
@@ -416,7 +416,7 @@ spec:
value: http://immich-machine-learning:3003 value: http://immich-machine-learning:3003
- name: REDIS_HOSTNAME - name: REDIS_HOSTNAME
value: immich-valkey value: immich-valkey
image: docker.io/valkey/valkey:9.1-alpine@sha256:a35428eba9043cc0b79dbe54100f0c92784f2de00ad09b01182bfb1c5c83d1bd image: docker.io/valkey/valkey:9.0-alpine@sha256:d1cc70645bbcef743615463a2fa4616e841407545e18f560aed0c49671a90147
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
livenessProbe: livenessProbe:
exec: exec:
+2 -2
View File
@@ -348,7 +348,7 @@ spec:
spec: spec:
containers: containers:
- name: prometheus - name: prometheus
image: prom/prometheus:v3.12.0 image: prom/prometheus:v3.9.1
args: args:
- --config.file=/etc/prometheus/prometheus.yml - --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus - --storage.tsdb.path=/prometheus
@@ -529,7 +529,7 @@ spec:
runAsGroup: 472 runAsGroup: 472
containers: containers:
- name: grafana - name: grafana
image: grafana/grafana:12.4.4 image: grafana/grafana:12.3.2
ports: ports:
- containerPort: 3000 - containerPort: 3000
name: http name: http
+2 -2
View File
@@ -552,7 +552,7 @@ spec:
failureThreshold: 3 failureThreshold: 3
initContainers: initContainers:
- name: postgresql-isready - name: postgresql-isready
image: docker.io/bitnamilegacy/postgresql:17.6.0-debian-12-r3 image: docker.io/bitnamilegacy/postgresql:17.5.0-debian-12-r3
resources: {} resources: {}
securityContext: {} securityContext: {}
env: env:
@@ -637,7 +637,7 @@ spec:
hostIPC: false hostIPC: false
containers: containers:
- name: postgresql - name: postgresql
image: docker.io/bitnamilegacy/postgresql:17.6.0-debian-12-r3 image: docker.io/bitnamilegacy/postgresql:17.5.0-debian-12-r3
imagePullPolicy: "IfNotPresent" imagePullPolicy: "IfNotPresent"
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
+1 -1
View File
@@ -27,7 +27,7 @@ spec:
spec: spec:
containers: containers:
- name: onlyoffice - name: onlyoffice
image: onlyoffice/documentserver:9.4.0 image: onlyoffice/documentserver:9.0.2
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
+2 -2
View File
@@ -89,7 +89,7 @@ spec:
initContainers: initContainers:
# Configure proxy auth in database before starting # Configure proxy auth in database before starting
- name: configure-auth - name: configure-auth
image: filebrowser/filebrowser:v2.63.5 image: filebrowser/filebrowser:v2.54.0
command: command:
- sh - sh
- -c - -c
@@ -109,7 +109,7 @@ spec:
runAsGroup: 1001 runAsGroup: 1001
containers: containers:
- name: filebrowser - name: filebrowser
image: filebrowser/filebrowser:v2.63.5 image: filebrowser/filebrowser:v2.54.0
command: command:
- filebrowser - filebrowser
- --database=/config/filebrowser.db - --database=/config/filebrowser.db
+1 -1
View File
@@ -31,7 +31,7 @@ spec:
spec: spec:
containers: containers:
- name: outline - name: outline
image: outlinewiki/outline:1.8.0 image: outlinewiki/outline:1.4.0
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
- name: NODE_ENV - name: NODE_ENV
+1 -1
View File
@@ -244,7 +244,7 @@ spec:
spec: spec:
containers: containers:
- name: qbittorrent - name: qbittorrent
image: linuxserver/qbittorrent:5.2.1 image: linuxserver/qbittorrent:5.1.4
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
- name: PUID - name: PUID
+4 -1
View File
@@ -41,7 +41,10 @@ spec:
spec: spec:
containers: containers:
- name: termix - name: termix
# renovate: datasource=github-releases depName=Termix-SSH/Termix versioning=loose extractVersion=^release-(?<version>.+)$ # NOTE: termix uses a non-semver tag pattern (release-X.Y.Z).
# Renovate handles it via a customManagers regex defined in
# admin-system/renovate.yaml (the kubernetes manager doesn't
# process inline `# renovate:` comments).
image: ghcr.io/lukegus/termix:release-1.11.0 image: ghcr.io/lukegus/termix:release-1.11.0
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
+1 -1
View File
@@ -30,7 +30,7 @@ spec:
spec: spec:
containers: containers:
- name: uptimekuma - name: uptimekuma
image: louislam/uptime-kuma:2.4.0 image: louislam/uptime-kuma:2.3.2
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
- name: TZ - name: TZ
+1 -1
View File
@@ -57,7 +57,7 @@ spec:
spec: spec:
containers: containers:
- name: meilisearch - name: meilisearch
image: getmeili/meilisearch:v1.45.2 image: getmeili/meilisearch:v1.11.3
env: env:
- name: MEILI_MASTER_KEY - name: MEILI_MASTER_KEY
valueFrom: valueFrom:
+3 -3
View File
@@ -130,7 +130,7 @@ spec:
initContainers: initContainers:
# Configure proxy auth in database before starting # Configure proxy auth in database before starting
- name: configure-auth - name: configure-auth
image: filebrowser/filebrowser:v2.63.5 image: filebrowser/filebrowser:v2.54.0
command: command:
- sh - sh
- -c - -c
@@ -151,7 +151,7 @@ spec:
runAsGroup: 1000 runAsGroup: 1000
containers: containers:
- name: filebrowser - name: filebrowser
image: filebrowser/filebrowser:v2.63.5 image: filebrowser/filebrowser:v2.54.0
command: command:
- filebrowser - filebrowser
- --database=/config/filebrowser.db - --database=/config/filebrowser.db
@@ -324,7 +324,7 @@ spec:
runAsUser: 0 runAsUser: 0
containers: containers:
- name: nginx - name: nginx
image: nginx:1.31-alpine image: nginx:1.27-alpine
ports: ports:
- containerPort: 8080 - containerPort: 8080
name: http name: http