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"