Skip to content

fix(helm): stamp Chart.yaml version on release - #414

Merged
onedr0p merged 2 commits into
mainfrom
fix/release-please-chart-version
Jul 23, 2026
Merged

onedr0p merged 2 commits into
mainfrom
fix/release-please-chart-version

Conversation

@onedr0p

@onedr0p onedr0p commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Follows the pattern from home-operations/kopiur@041549a: release-please stamps version and appVersion in Chart.yaml on every release (x-release-please-version annotations + extra-files), so a git-sourced chart install deploys a real image tag instead of the nonexistent 0.0.0. The release workflow still re-stamps both at helm package time; this just keeps the repo copy from going stale.

Applying the pattern verbatim would have broken tuppr's CI, so two extra pieces were needed:

  1. The chart README is stamped too. tuppr gates chart-docs staleness in CI (helm-docs-check in the tests workflow, which also runs on pushes to main). Since the README version badges are generated from Chart.yaml, a release PR that bumped only Chart.yaml would fail that check on the PR and then on main after merge. The README is therefore listed in extra-files with annotated badge lines. Two constraints from release-please's generic updater (verified against its source, src/updaters/generic.ts):

    • It replaces only the first semver occurrence per annotated line, so the version must appear exactly once per line - it is kept out of the badge alt text.
    • Its semver regex would swallow a shields.io path-style -informational color suffix as a prerelease (Version-0.4.0-informational → Version-0.4.1, corrupting the URL), so the version badges use the static/v1?label=...&message=0.4.0&color=... query form, where the version is delimited by &.

    Verified end to end by simulating the updater's exact regex/replacement on Chart.yaml + README.md and confirming helm-docs regeneration is byte-identical afterwards - so release PRs keep helm-docs-check green.

  2. The helm unittest image assertion matched a hardcoded tuppr:0.0.0; it now asserts the repo:semver shape so it keeps passing as the stamped appVersion moves.

Chart renders with image: ghcr.io/home-operations/tuppr:0.4.0, helm-docs-check passes, helm lint passes, and all 54 chart unit tests pass.

onedr0p and others added 2 commits July 23, 2026 07:20
Follows the kopiur pattern: release-please now stamps version and
appVersion in Chart.yaml (x-release-please-version annotations +
extra-files) so a git-sourced install deploys a real image tag instead
of the nonexistent 0.0.0. The release workflow still re-stamps both at
package time; this keeps the repo copy from going stale.

tuppr additionally gates chart docs staleness in CI (helm-docs-check),
so the pattern needs two extra pieces kopiur did not:

- The chart README version badges are also stamped (listed in
  extra-files). The release-please generic updater replaces only the
  first semver per annotated line and would swallow a shields.io
  `-color` path suffix as a prerelease, so the badges move off
  chart.badgesSection to the static/v1 query form with one version
  occurrence per line and an inline annotation, keeping helm-docs
  regeneration byte-identical after a stamp (verified by simulating
  the updater regex end to end).
- The helm unittest image assertion now matches the repo:semver shape
  instead of a hardcoded 0.0.0 tag.

Signed-off-by: Devin Buhl <devin@buhl.casa>
Removed commented lines related to Pod Security and image versioning.

Signed-off-by: Devin Buhl <onedr0p@users.noreply.github.com>
@greptile-apps

greptile-apps Bot commented Jul 23, 2026

Copy link
Copy Markdown

Greptile Summary

Updates release automation so each release stamps the Helm chart and generated documentation versions.

  • Sets the repository chart version and appVersion to the current release.
  • Adds Chart.yaml and README.md to release-please extra files.
  • Reworks generated badges to remain compatible with release-please and helm-docs.
  • Generalizes the default image test to validate the stamped semantic-version tag.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete blocking or independently actionable non-blocking issues identified.

The release configuration, chart metadata, generated README template, and image assertion consistently implement repository version stamping while preserving the existing packaging and documentation checks.

T-Rex T-Rex Logs

What T-Rex did

  • I prepared the before-capture baseline by reviewing the stamped Chart/README metadata, the rendered 0.4.0 image, and the lint status.
  • I executed the exact reproducible validation harness trex-artifacts/chart-release-metadata-validation.sh to perform the capture.
  • I verified the after-capture state showed byte-identical hashes, a clean generated diff, the asserted 0.4.0 image, and successful lint.
  • I surfaced the artifacts used in this validation, including the validation script and the two capture logs, for reviewer inspection.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
charts/tuppr/Chart.yaml Replaces placeholder chart metadata with release-please-annotated version and appVersion values.
charts/tuppr/README.md Updates generated badges to independently stamp chart and application versions without ambiguous semver matches.
charts/tuppr/README.md.gotmpl Replaces the stock badge section with output matching the release-please-compatible committed README.
charts/tuppr/tests/deployment_test.yaml Verifies that the default rendered image uses a three-component semantic-version tag instead of a fixed placeholder.
release-please-config.json Adds the chart metadata and generated README to the root package's release-time version updates.

Reviews (1): Last reviewed commit: "Clean up comments in Chart.yaml" | Re-trigger Greptile

@onedr0p
onedr0p merged commit a769302 into main Jul 23, 2026
11 checks passed
@onedr0p
onedr0p deleted the fix/release-please-chart-version branch July 23, 2026 11:27
ajgon pushed a commit to deedee-ops/home-ops that referenced this pull request Jul 23, 2026
…4.0 ➔ 0.4.1) (#412)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/home-operations/charts/tuppr](https://github.com/home-operations/tuppr) | patch | `0.4.0` → `0.4.1` |

---

### Release Notes

<details>
<summary>home-operations/tuppr (ghcr.io/home-operations/charts/tuppr)</summary>

### [`v0.4.1`](https://github.com/home-operations/tuppr/blob/HEAD/CHANGELOG.md#041-2026-07-23)

[Compare Source](home-operations/tuppr@0.4.0...0.4.1)

##### Features

- **talosupgrade:** lease-based Alertmanager silence during upgrade runs ([#&#8203;416](home-operations/tuppr#416)) ([00a8ffd](home-operations/tuppr@00a8ffd))

##### Bug Fixes

- **container:** update image ghcr.io/siderolabs/kubelet (v1.36.2 → v1.36.3) ([#&#8203;411](home-operations/tuppr#411)) ([1c2258f](home-operations/tuppr@1c2258f))
- **deps:** update kubernetes monorepo (v0.36.2 → v0.36.3) ([#&#8203;408](home-operations/tuppr#408)) ([69a12e0](home-operations/tuppr@69a12e0))
- **helm:** stamp Chart.yaml version on release ([#&#8203;414](home-operations/tuppr#414)) ([a769302](home-operations/tuppr@a769302))
- **release:** use the generic updater for Chart.yaml stamping ([#&#8203;415](home-operations/tuppr#415)) ([a64bd11](home-operations/tuppr@a64bd11))
- **talos:** handle unreachable nodes without stack-trace log spam ([#&#8203;413](home-operations/tuppr#413)) ([313dec8](home-operations/tuppr@313dec8))

##### Miscellaneous Chores

- **mise:** Update tool kubectl (1.36.2 → 1.36.3) ([#&#8203;407](home-operations/tuppr#407)) ([38a7513](home-operations/tuppr@38a7513))

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Warsaw)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNzIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI3Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvcGF0Y2giXX0=-->

Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/412
gabrielcosi added a commit to gabrielcosi/home-ops that referenced this pull request Jul 23, 2026
…4.0 ➔ 0.4.1) (#64)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/home-operations/charts/tuppr](https://github.com/home-operations/tuppr) | patch | `0.4.0` → `0.4.1` |

---

### Release Notes

<details>
<summary>home-operations/tuppr (ghcr.io/home-operations/charts/tuppr)</summary>

### [`v0.4.1`](https://github.com/home-operations/tuppr/blob/HEAD/CHANGELOG.md#041-2026-07-23)

[Compare Source](home-operations/tuppr@0.4.0...0.4.1)

##### Features

- **talosupgrade:** lease-based Alertmanager silence during upgrade runs ([#&#8203;416](home-operations/tuppr#416)) ([00a8ffd](home-operations/tuppr@00a8ffd))

##### Bug Fixes

- **container:** update image ghcr.io/siderolabs/kubelet (v1.36.2 → v1.36.3) ([#&#8203;411](home-operations/tuppr#411)) ([1c2258f](home-operations/tuppr@1c2258f))
- **deps:** update kubernetes monorepo (v0.36.2 → v0.36.3) ([#&#8203;408](home-operations/tuppr#408)) ([69a12e0](home-operations/tuppr@69a12e0))
- **helm:** stamp Chart.yaml version on release ([#&#8203;414](home-operations/tuppr#414)) ([a769302](home-operations/tuppr@a769302))
- **release:** use the generic updater for Chart.yaml stamping ([#&#8203;415](home-operations/tuppr#415)) ([a64bd11](home-operations/tuppr@a64bd11))
- **talos:** handle unreachable nodes without stack-trace log spam ([#&#8203;413](home-operations/tuppr#413)) ([313dec8](home-operations/tuppr@313dec8))

##### Miscellaneous Chores

- **mise:** Update tool kubectl (1.36.2 → 1.36.3) ([#&#8203;407](home-operations/tuppr#407)) ([38a7513](home-operations/tuppr@38a7513))

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Berlin)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjkuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI2OS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Co-authored-by: Gabriel Cosi <contact@gabrielcosi.dev>
Reviewed-on: https://git.xcd.dev/gabrielcosi/home-ops/pulls/64
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jul 24, 2026
…4.0 ➔ 0.4.1) (#1693)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/home-operations/charts/tuppr](https://github.com/home-operations/tuppr) | patch | `0.4.0` → `0.4.1` |

---

### Release Notes

<details>
<summary>home-operations/tuppr (ghcr.io/home-operations/charts/tuppr)</summary>

### [`v0.4.1`](https://github.com/home-operations/tuppr/blob/HEAD/CHANGELOG.md#041-2026-07-23)

[Compare Source](home-operations/tuppr@0.4.0...0.4.1)

##### Features

- **talosupgrade:** lease-based Alertmanager silence during upgrade runs ([#&#8203;416](home-operations/tuppr#416)) ([00a8ffd](home-operations/tuppr@00a8ffd))

##### Bug Fixes

- **container:** update image ghcr.io/siderolabs/kubelet (v1.36.2 → v1.36.3) ([#&#8203;411](home-operations/tuppr#411)) ([1c2258f](home-operations/tuppr@1c2258f))
- **deps:** update kubernetes monorepo (v0.36.2 → v0.36.3) ([#&#8203;408](home-operations/tuppr#408)) ([69a12e0](home-operations/tuppr@69a12e0))
- **helm:** stamp Chart.yaml version on release ([#&#8203;414](home-operations/tuppr#414)) ([a769302](home-operations/tuppr@a769302))
- **release:** use the generic updater for Chart.yaml stamping ([#&#8203;415](home-operations/tuppr#415)) ([a64bd11](home-operations/tuppr@a64bd11))
- **talos:** handle unreachable nodes without stack-trace log spam ([#&#8203;413](home-operations/tuppr#413)) ([313dec8](home-operations/tuppr@313dec8))

##### Miscellaneous Chores

- **mise:** Update tool kubectl (1.36.2 → 1.36.3) ([#&#8203;407](home-operations/tuppr#407)) ([38a7513](home-operations/tuppr@38a7513))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1693
onedr0p added a commit to home-operations/kromgo that referenced this pull request Jul 24, 2026
charts/kromgo/Chart.yaml carried a `0.0.0` placeholder for version and
appVersion, so the committed chart (and its generated README badges) never
reflected a real release; only `helm package --version/--app-version` in the
release workflow produced a versioned chart. release-please now stamps both
fields, seeded from the current released version in
.release-please-manifest.json.

Chart.yaml is registered as a typed `{"type": "generic"}` extra-file rather
than a bare path: release-please picks its updater from the file extension, so
a plain `charts/kromgo/Chart.yaml` string selects the YAML updater, which
re-serializes the document (stripping every comment) and misses appVersion
entirely. The generic updater edits only the annotated lines in place.

The chart README is generated by helm-docs, so the badges must be
stamp-friendly: chart.badgesSection emits all three badges on one line and
embeds the version in both the alt text and a `-informational` shields path
segment, which the generic updater would mangle (it rewrites only the first
semver on an annotated line, and reads the `-color` suffix as a prerelease).
README.md.gotmpl now hand-rolls the badges using the static/v1 query form, one
per line, each with its own annotation.

The deployment test that pinned the default image to
`ghcr.io/home-operations/kromgo:0.0.0` now asserts the repo:semver shape, since
the tag floats with the stamped appVersion. Drops the matching stale note on
the helm-test task.

Ports home-operations/tuppr#414 and home-operations/tuppr#415.

Signed-off-by: Devin Buhl <devin@buhl.casa>
ajgon pushed a commit to deedee-ops/home-ops that referenced this pull request Jul 28, 2026
…4.0 ➔ 0.4.1) (#412)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/home-operations/charts/tuppr](https://github.com/home-operations/tuppr) | patch | `0.4.0` → `0.4.1` |

---

### Release Notes

<details>
<summary>home-operations/tuppr (ghcr.io/home-operations/charts/tuppr)</summary>

### [`v0.4.1`](https://github.com/home-operations/tuppr/blob/HEAD/CHANGELOG.md#041-2026-07-23)

[Compare Source](home-operations/tuppr@0.4.0...0.4.1)

##### Features

- **talosupgrade:** lease-based Alertmanager silence during upgrade runs ([#&#8203;416](home-operations/tuppr#416)) ([00a8ffd](home-operations/tuppr@00a8ffd))

##### Bug Fixes

- **container:** update image ghcr.io/siderolabs/kubelet (v1.36.2 → v1.36.3) ([#&#8203;411](home-operations/tuppr#411)) ([1c2258f](home-operations/tuppr@1c2258f))
- **deps:** update kubernetes monorepo (v0.36.2 → v0.36.3) ([#&#8203;408](home-operations/tuppr#408)) ([69a12e0](home-operations/tuppr@69a12e0))
- **helm:** stamp Chart.yaml version on release ([#&#8203;414](home-operations/tuppr#414)) ([a769302](home-operations/tuppr@a769302))
- **release:** use the generic updater for Chart.yaml stamping ([#&#8203;415](home-operations/tuppr#415)) ([a64bd11](home-operations/tuppr@a64bd11))
- **talos:** handle unreachable nodes without stack-trace log spam ([#&#8203;413](home-operations/tuppr#413)) ([313dec8](home-operations/tuppr@313dec8))

##### Miscellaneous Chores

- **mise:** Update tool kubectl (1.36.2 → 1.36.3) ([#&#8203;407](home-operations/tuppr#407)) ([38a7513](home-operations/tuppr@38a7513))

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Warsaw)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNzIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI3Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvcGF0Y2giXX0=-->

Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/412
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant