From 09fe3c2be6b9bfe171a50c3858aa115aa341b996 Mon Sep 17 00:00:00 2001 From: jklein Date: Mon, 24 Aug 2026 15:10:14 +0200 Subject: [PATCH] Decouple appVersion from gluetun in wording and value The previous commit moved every image tag into values.yaml but left appVersion described as a marker "for the gluetun line", to be updated together with gluetun.image.tag. That still asserts a coupling the chart does not have, and the value v3.41.1 confirmed it at a glance. appVersion is now 1.0.0 (version 1.0.0+up1.0.0): the chart's own version marker, freely chosen and tied to no upstream. The texts say that instead of the old coupling in Chart.yaml, values.yaml and the two README passages. The README's remaining true statement is kept but generalized - renovate-bump-chart bumps the patch level on an unchanged appVersion for all nine images alike, which is not a gluetun special case. Also corrected on the way: the busybox init image comment claimed it was "pinned independently of appVersion (which tracks gluetun)". Neither half holds any more - appVersion tracks nothing, and every image in the chart is pinned the same way. No functional change: the rendered gluetun image is qmcgaw/gluetun:v3.41.1 before and after. --- README.md | 4 ++-- freesailarr/Chart.yaml | 20 +++++++++++--------- freesailarr/values.yaml | 12 ++++++------ 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index e034f85..5bd52b8 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ What Renovate keeps current: Each chart renders its main image as `:{{ .Chart.AppVersion }}` — repository in the template, version in `Chart.yaml`. Renovate cannot join two files, so the mapping lives in `renovate.json5`, one block per chart. It is deliberately *not* a `# renovate:` comment inside each `Chart.yaml`: that would touch all chart directories and force a version bump plus a publish per chart for a pure comment change. Charts whose tags carry a flavour or date suffix (`apache-tika`, `minecraft-server`, `rss-bridge`, `teamspeak-server`) override `versioning` in their block; the reasoning sits next to each one. `freesailarr` has no block on purpose — see the images exception above; a block would either duplicate the `helm-values` updates or rewrite an `appVersion` that selects no image. -A consequence of pinning every tag in `values.yaml`: `ci/renovate-bump-chart.sh` sees an unchanged `appVersion` and bumps the chart **patch**, so the `+up` suffix keeps naming the old marker version. That is intended for the eight app images, but it means a **gluetun** update must be paired with a hand edit of `appVersion` (and thus the suffix), otherwise the chart version stops describing what is deployed. +A consequence of pinning every tag in `values.yaml`: `ci/renovate-bump-chart.sh` sees an unchanged `appVersion` and bumps the chart **patch**. That holds for all nine images alike — none of them is special — and it is the intended outcome, since `appVersion` here is the chart's own marker rather than a tracked upstream version. One dependency is constrained beyond its versioning: **nginx** (the Synapse delegation sidecar) is limited to **even minors** via `allowedVersions`. nginx numbers its release branches by minor — even is stable, odd is mainline — and the chart belongs on stable. Patch updates inside the stable branch still flow through normally. The constraint tolerates a variant suffix (`1.30.4-alpine`) on purpose: docker versioning only ever offers candidates carrying the current tag's suffix, so a suffix-blind constraint would silently freeze nginx the day the sidecar moves to a slimmer base image — a switch to `1.30.4-alpine` that #84 has commissioned a check on — with no error and no warning. @@ -146,7 +146,7 @@ These guidelines are **binding for every current and future chart** in this repo ### 3. Images - The main app image tag comes from `{{ .Chart.AppVersion }}` — never hardcoded. -- **Documented exception — freesailarr**: the chart bundles nine independently versioned upstreams, so none of them is "the" app version. **No** tag comes from `appVersion`; all nine images are pinned as `.image.repository` / `.image.tag` in `values.yaml`, which is also what puts every one of them under the built-in `helm-values` manager. Its `appVersion` is a hand-maintained marker for the gluetun line and is updated together with `gluetun.image.tag`; consequently the chart has **no** block in `renovate.json5` and is **not** in the `change-app-version.yml` choice list. +- **Documented exception — freesailarr**: the chart bundles nine independently versioned upstreams, so none of them is "the" app version. **No** tag comes from `appVersion`; all nine images are pinned as `.image.repository` / `.image.tag` in `values.yaml`, which is also what puts every one of them under the built-in `helm-values` manager. Its `appVersion` is the chart's own version marker, freely chosen and tied to no upstream — raised by hand when a new edition of the chart is marked as a whole. Consequently the chart has **no** block in `renovate.json5` and is **not** in the `change-app-version.yml` choice list. - Auxiliary images (sidecars, init containers, secondary workloads — e.g. the delegation nginx in matrix-synapse, guacd in patchmon, busybox init/consume images in paperless-ngx) are pinned via values instead of being hardcoded in templates, and their pinned versions are reviewed alongside every app-version update round. ### 4. Ingress diff --git a/freesailarr/Chart.yaml b/freesailarr/Chart.yaml index 98e889c..95c686a 100644 --- a/freesailarr/Chart.yaml +++ b/freesailarr/Chart.yaml @@ -5,15 +5,17 @@ icon: https://raw.githubusercontent.com/qdm12/gluetun/master/doc/logo_256.png type: application -version: 1.0.0+upv3.41.1 -# Hand-maintained marker for the gluetun line this chart is built around - it -# is NOT the source of any image tag. All nine images, gluetun included, are -# pinned in values.yaml so Renovate's helm-values manager can propose them -# there; consequently this chart has no app-version block in renovate.json5 and -# nothing rewrites this field automatically. Update it by hand together with -# gluetun.image.tag, otherwise the +up suffix of version: stops describing what -# the chart deploys. -appVersion: "v3.41.1" +version: 1.0.0+up1.0.0 +# The chart's own version marker, freely chosen and tied to no upstream. The +# stack bundles nine independently versioned projects, so there is no single +# "app version" to track here. +# +# It is NOT the source of any image tag: all nine images are pinned in +# values.yaml, where Renovate's helm-values manager proposes them. Nothing +# rewrites this field automatically - the chart has no app-version block in +# renovate.json5 and is not in the change-app-version.yml choice list. Raise it +# by hand when you want to mark a new edition of the chart as a whole. +appVersion: "1.0.0" maintainers: - name: jklein diff --git a/freesailarr/values.yaml b/freesailarr/values.yaml index a0eb083..4f086db 100644 --- a/freesailarr/values.yaml +++ b/freesailarr/values.yaml @@ -15,10 +15,10 @@ # along with it. A chart whose main image came from appVersion would instead # need a hard-coded block in renovate.json5 - freesailarr deliberately has none. # -# Chart.yaml's appVersion is therefore a hand-maintained marker for the gluetun -# line this chart is built around, not the source of any tag. Keep it in step -# with gluetun.image.tag below when you accept a gluetun update, otherwise the -# +up suffix of the chart version drifts away from what is actually deployed. +# Chart.yaml's appVersion is therefore the chart's own version marker, freely +# chosen and tied to no upstream - not the source of any tag here. Nothing +# rewrites it automatically; raise it by hand when you want to mark a new +# edition of the chart as a whole. # Scale the whole chart down without uninstalling it: scaleDown: true renders # every Deployment/StatefulSet with replicas: 0 (and suspends CronJobs) and @@ -242,8 +242,8 @@ qbittorrent: # persisted qBittorrent config before the app starts. Runs as puid/pgid so # the config file keeps the ownership the app expects. configInit: - # Auxiliary busybox image. Pinned independently of appVersion (which - # tracks gluetun); reviewed alongside every app-version update round. + # Auxiliary busybox image for the init container, pinned here like every + # other image in this chart and proposed by Renovate the same way. image: repository: busybox tag: "1.38.0"