Skip to content

Upgrade CI and test infrastructure to Helm 4 - #200

Merged
cfis merged 1 commit into
docker-mailserver:masterfrom
cfis:ci-helm-4
Oct 27, 2026
Merged

cfis merged 1 commit into
docker-mailserver:masterfrom
cfis:ci-helm-4

Conversation

@cfis

@cfis cfis commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator

Moves CI to Helm 4 and updates and pins the rest of the CI and test tooling.

Why

The unittest and chart-testing jobs didn't set up Helm, so they used whatever version came with the runner image, and helm-unittest was installed from git without a version. Snapshot output depends on the helm-unittest version, so a plugin release broke the snapshot tests on master with no chart change: the current helm-unittest renders env entries that have no value (value: null), which the existing snapshots don't have. Any PR that touches the templates currently fails unittest.

Changes

Before After
Helm 3.19.0 (lint job only) 4.3.1, set up in all jobs
helm-unittest unpinned 1.2.1
kube-score 1.17.0 1.20.0
kind node images 1.32.8, 1.33.4, 1.34.0 1.35.8, 1.36.4, 1.37.0 (kind 0.33)
actions/checkout v4 v7
actions/setup-python v5 (Python 3.11) v7 (Python 3.13)
azure/setup-helm v4.3.0 v5.0.1
helm/chart-testing-action v2.7.0 v2.9.0 (ct 3.15.0)
helm/kind-action v1.5.0 v1.15.1

Also:

  • Replaces the deprecated ::set-output with $GITHUB_OUTPUT.
  • Runs the workflow when .ci/ changes.
  • Publish: sets skip_existing on chart-releaser. Merges that change charts/ without bumping the chart version (docs, tests, CI) currently fail trying to re-release the existing version. The last publish run on master failed, most likely for this reason (its logs have expired).
  • Pins the chart-testing image in .ci/scripts/local-ct-lint.sh.
  • Regenerates the snapshots with helm-unittest 1.2.1. The only change is the empty env entries.
  • TESTING.md: lists the current jobs, fixes the badge (it pointed at the old repo's workflows), and documents running and updating the unit tests with the pinned helm-unittest version.

Notes

  • chart-testing doesn't officially support Helm 4 yet (Helm 4 helm/chart-testing#854 was closed as not planned). It calls the helm binary, and ct lint passes locally with Helm 4.3.1. ct install is exercised by this PR's CI run.
  • Plugins installed from git need --verify=false on Helm 4.

Testing

  • helm unittest passes with Helm 4.3.1 and helm-unittest 1.2.1.
  • ct lint passes in the quay.io/helmpack/chart-testing:v3.15.0 image with Helm 4.3.1.
  • kube-score 1.20.0 passes with the existing ignores.

#199 (docker-mailserver 16) will be rebased onto this once it's merged, so its snapshot changes only contain its own changes.

🤖 Generated with Claude Code

Move CI to Helm 4 and pin every tool so results don't change between
runs. The unittest and chart-testing jobs used whatever Helm came with
the runner image, and helm-unittest was installed unpinned from git.
Since snapshot output depends on the helm-unittest version, a new
plugin release broke the snapshot tests on master without any chart
change.

* Helm 3.19.0 -> 4.3.1, set up explicitly in all three jobs
* helm-unittest pinned to 1.2.1 (installed with --verify=false, as
  Helm 4 requires for plugins installed from git)
* kube-score 1.17.0 -> 1.20.0
* kind node images 1.32/1.33/1.34 -> 1.35.8/1.36.4/1.37.0, the images
  for kind 0.33 which kind-action 1.15.1 uses
* actions/checkout v4 -> v7, actions/setup-python v5 -> v7 (Python
  3.11 -> 3.13), azure/setup-helm 4.3.0 -> 5.0.1,
  chart-testing-action 2.7.0 -> 2.9.0, kind-action 1.5.0 -> 1.15.1
* Replace the deprecated ::set-output with $GITHUB_OUTPUT
* Also run the workflow when .ci/ changes
* Publish: set skip_existing so merges that don't bump the chart
  version (docs, tests, CI) don't fail re-releasing an existing version
* Pin the chart-testing image used by local-ct-lint.sh
* Regenerate snapshots with helm-unittest 1.2.1, which renders env
  entries without a value that the old snapshots were missing
* TESTING.md: list the current jobs, fix the badge, and document running
  and updating the unit tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cfis
cfis requested a review from funkypenguin as a code owner October 27, 2026 03:07
@cfis
cfis merged commit 13667b4 into docker-mailserver:master Oct 27, 2026
5 checks passed
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