-
-
Notifications
You must be signed in to change notification settings - Fork 352
Comparing changes
Open a pull request
base repository: helmfile/helmfile
base: v1.5.1
head repository: helmfile/helmfile
compare: v1.5.2
- 12 commits
- 46 files changed
- 9 contributors
Commits on May 15, 2026
-
Bump Helm support to 3.21.0 and 4.2.0 (#2588)
* chore: bump pinned helm versions Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/b1cfacaa-52d2-46c8-9fc7-67beaca43df0 Co-authored-by: yxxhero <[email protected]> * fix: align kubernetes module pins for helm bump Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/b1cfacaa-52d2-46c8-9fc7-67beaca43df0 Co-authored-by: yxxhero <[email protected]> * docs: clarify helm and k8s version pins Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/b1cfacaa-52d2-46c8-9fc7-67beaca43df0 Co-authored-by: yxxhero <[email protected]> * test: update helm 4 snapshot outputs Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/b430f041-d8fb-407f-af06-070f2d0e9293 Co-authored-by: yxxhero <[email protected]> * test: update helm 4 postrender integration fixture Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/fea792b4-b24c-43a9-a391-1fd52e59f843 Co-authored-by: yxxhero <[email protected]> * test: update helm 4 postrender template fixture Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/7ca16c9d-e398-46ce-849b-6299214b2b60 Co-authored-by: yxxhero <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: yxxhero <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 7ffd4a2 - Browse repository at this point
Copy the full SHA 7ffd4a2View commit details
Commits on May 17, 2026
-
bump helm-diff to v3.15.7 (#2591)
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/1ee2cfe9-dd7e-4477-80f9-ff62b0cdeab7 Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: yxxhero <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for e96a277 - Browse repository at this point
Copy the full SHA e96a277View commit details
Commits on May 18, 2026
-
fix: refresh Chart.lock after rewriting file:// dependencies (#2587)
* fix: refresh Chart.lock after rewriting file:// dependencies `rewriteChartDependencies` rewrites relative `file://` repository URLs in Chart.yaml to absolute paths so chartify can resolve them from a temp directory. That mutates the Chart.yaml dependencies block, which invalidates the Chart.lock digest (helm computes it as `sha256(json.Marshal([2][]Dependency{req, lock}))` over the dependencies). Once the lock is out of sync, downstream `helm dependency build` errors with "the lock file (Chart.lock) is out of sync with the dependencies file (Chart.yaml)" and chartify falls back to `helm dependency update`. `dep update` then re-resolves Chart.yaml's version constraints against the chart repo, so any constraint that admits newer versions (e.g. `version: "*"`, `~1.0`) silently picks up a newer dependency on every render — even though Chart.lock pins a specific version. Repro: - Chart.yaml has `version: "*"` for some-dep, Chart.lock pins 4.1.0, upstream now publishes 4.2.0. - `helm template .` honors the cached `charts/some-dep-4.1.0.tgz`. - `helmfile template` produces 4.2.0, because it triggered chartify (via jsonPatches/strategic-merge/kustomize/etc), which copied the chart, ran `dep build` against an out-of-sync lock, fell back to `dep up`, and re-resolved the wildcard. This commit refreshes Chart.lock alongside Chart.yaml in the temp copy: - Mirror the rewritten file:// repository URLs onto matching entries in Chart.lock's dependencies. Without this, `helm dep build` would resolve the lock's relative `file://` paths against the temp chart directory and fail with "directory ... not found". - Recompute the digest using helm's resolver.HashReq algorithm (`sha256(json.Marshal([2][]chart.Dependency{req, lock}))`). The algorithm is small and stable; resolver.HashReq itself lives in an internal package, so it's inlined here. - Locked versions are preserved verbatim — only the repository URL is updated and the digest recomputed. Chart.lock remains the source of truth for which versions get installed. - The original Chart.lock on disk is never modified; only the temp copy is rewritten. Adds TestRewriteChartDependencies_RefreshesChartLock covering digest recomputation, file:// URL mirroring, version preservation, untouched non-file:// deps, and original-on-disk integrity. Signed-off-by: Shane Starcher <[email protected]> * fix: address Copilot review issues for Chart.lock refresh - Map all helm Dependency fields (alias, condition, tags, import-values, enabled) when building the request slice for digest computation, not just name/version/repository. This ensures the recomputed digest matches Helm's resolver.HashReq for all dependency shapes. - Match lock entries by Name + Alias (not Name alone) to correctly handle charts with duplicate dependency names distinguished by alias. - Log a warning when reading Chart.lock fails with a non-NotExist error, while still treating a missing Chart.lock as expected. - Add test case exercising dependencies with alias, condition, tags, and import-values fields, including same-name deps disambiguated by alias. Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Shane Starcher <[email protected]> * build(deps): bump github.com/helmfile/chartify to v0.26.4 Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Shane Starcher <[email protected]> * fix: normalize import-values for JSON marshaling and improve test coverage - Normalize import-values using maputil.RecursivelyStringifyMapKey before assigning to helmchart.Dependency.ImportValues. When go-yaml v2 decodes nested maps (e.g. import-values entries with child/parent keys), they become map[interface{}]interface{} which json.Marshal cannot encode. This would silently prevent Chart.lock rewriting. The normalization converts all map keys to strings, making the value JSON-safe. - Improve TestRewriteChartDependencies_RefreshesChartLockWithExtraFields to prove that extra fields (condition, tags, import-values) actually affect the computed digest by comparing digests with and without those fields and asserting they differ. Signed-off-by: Shane Starcher <[email protected]> Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: normalize lock ImportValues and fix digest test isolation - Normalize lock.Dependencies ImportValues via RecursivelyStringifyMapKey before json.Marshal, preventing failures when go-yaml v2 decodes nested maps as map[interface{}]interface{}. - Fix TestRewriteChartDependencies_RefreshesChartLockWithExtraFields to use a shared root directory so both chart variants resolve file:// paths to the same absolute location, isolating digest differences to field content. - Add TestRewriteChartDependencies_GoYamlV2ImportValues exercising the HELMFILE_GO_YAML_V3=false path with import-values containing nested maps. Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Shane Starcher <[email protected]> * fix: add exact digest verification test against Helm's HashReq Add TestRewriteChartDependencies_DigestMatchesHelmHashReq which computes the expected digest independently using the same algorithm as Helm's resolver.HashReq and asserts the rewritten Chart.lock matches exactly. This guards against producing a digest that is "different" yet still rejected by `helm dependency build`. Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Shane Starcher <[email protected]> --------- Signed-off-by: Shane Starcher <[email protected]> Co-authored-by: Shane Starcher <[email protected]> Co-authored-by: Claude Opus 4.6 <[email protected]>Configuration menu - View commit details
-
Copy full SHA for 23802e7 - Browse repository at this point
Copy the full SHA 23802e7View commit details
Commits on May 19, 2026
-
feat: support HELMFILE_KUBE_CONTEXT env var for default kube context (#…
…2593) * feat: support HELMFILE_KUBE_CONTEXT env var for default kube context Mirrors the existing HELMFILE_ENVIRONMENT pattern: the --kube-context CLI flag takes precedence, falling back to HELMFILE_KUBE_CONTEXT when unset. Refs #1213. Signed-off-by: Dominik Schmidt <[email protected]> * docs: mention HELMFILE_KUBE_CONTEXT in cli.md and templating.md Signed-off-by: Dominik Schmidt <[email protected]> --------- Signed-off-by: Dominik Schmidt <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for c15cbb0 - Browse repository at this point
Copy the full SHA c15cbb0View commit details -
feat: support HELMFILE_NAMESPACE env var for default namespace (#2592)
* feat: support HELMFILE_NAMESPACE env var for default namespace Mirrors the existing HELMFILE_ENVIRONMENT pattern: the --namespace CLI flag takes precedence, falling back to HELMFILE_NAMESPACE when unset. Signed-off-by: Dominik Schmidt <[email protected]> * docs: mention HELMFILE_NAMESPACE in cli.md and templating.md Signed-off-by: Dominik Schmidt <[email protected]> --------- Signed-off-by: Dominik Schmidt <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 31ac918 - Browse repository at this point
Copy the full SHA 31ac918View commit details
Commits on May 20, 2026
-
fix: normalize dependency chart path before DirectoryExistsAt check (#…
…2598) When helmfile.d contains multiple release files and one release has a local chart dependency (e.g. chart: ../chart), the dependency path was passed to DirectoryExistsAt without normalizing against basePath. This caused the path to be resolved against CWD instead of the helmfile directory, so the local chart was not detected and helmfile tried to resolve it as a remote repo, failing with: 'failed reading adhoc dependencies: no helm list entry found for repository' Fixes #2596 Signed-off-by: yxxhero <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 81ab674 - Browse repository at this point
Copy the full SHA 81ab674View commit details -
Add jsonPatches regression coverage for chartify lookup rendering (#2586
) * test: cover jsonPatches lookup regression Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/72b7ba14-50b8-4407-ba37-6da202609603 Co-authored-by: zhaque44 <[email protected]> * test: simplify json patch fixture Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/72b7ba14-50b8-4407-ba37-6da202609603 Co-authored-by: zhaque44 <[email protected]> * test: target existing json patch path Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/72b7ba14-50b8-4407-ba37-6da202609603 Co-authored-by: zhaque44 <[email protected]> * test: validate diff exit codes in issue-2271 Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/5615c543-f96b-44ed-be25-ca1559ee6ab0 Co-authored-by: yxxhero <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: zhaque44 <[email protected]> Co-authored-by: yxxhero <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 2f2e861 - Browse repository at this point
Copy the full SHA 2f2e861View commit details -
feat: add defaultInherit for automatic release template inheritance (#…
…2600) * feat: add defaultInherit for automatic release template inheritance Add a top-level defaultInherit field to helmfile.yaml that automatically applies template inheritance to all releases without requiring explicit inherit on each release. The field accepts a single template name as a string or a list of template names. Releases that already explicitly inherit from the same template are not duplicated. Fixes #2599 Signed-off-by: yxxhero <[email protected]> * style: fix gci formatting in app_template_test.go Signed-off-by: yxxhero <[email protected]> * fix: correct relative chart path in integration test Signed-off-by: yxxhero <[email protected]> * fix: use absolute chart path in bad-helmfile test Signed-off-by: yxxhero <[email protected]> * fix: use clean chart path in bad-helmfile test Signed-off-by: yxxhero <[email protected]> * fix: use dir variable for chart path Signed-off-by: yxxhero <[email protected]> * test: fix flaky defaultInherit integration assertions Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37 Co-authored-by: yxxhero <[email protected]> * test: tighten defaultInherit integration assertions Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37 Co-authored-by: yxxhero <[email protected]> * test: harden release block parsing in issue-2599 case Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37 Co-authored-by: yxxhero <[email protected]> * test: make issue-2599 assertions format-tolerant Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37 Co-authored-by: yxxhero <[email protected]> * test: fix section extraction and regex matching in issue-2599 case Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37 Co-authored-by: yxxhero <[email protected]> * fix: sanitize defaultInherit values and dedupe applied templates Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/85a8e815-3701-4b48-a28d-6bb2d50a3b40 Co-authored-by: yxxhero <[email protected]> * chore: address validation feedback on defaultInherit fixes Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/85a8e815-3701-4b48-a28d-6bb2d50a3b40 Co-authored-by: yxxhero <[email protected]> * fix: sanitize releaseInherit entries in applyDefaultInherit; add cleanup trap and quote vars in integration test Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/1fbf62d5-7ce2-42e5-898b-30151c0c1ef9 Co-authored-by: yxxhero <[email protected]> * refactor: combine releaseInherit loops in applyDefaultInherit to avoid double TrimSpace; clarify test comment Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/1fbf62d5-7ce2-42e5-898b-30151c0c1ef9 Co-authored-by: yxxhero <[email protected]> * test: align default inherit tests with yaml wrapper and assertions Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/3ea9b8e4-633f-43c4-899f-e063ec576486 Co-authored-by: yxxhero <[email protected]> * test: address review feedback on defaultInherit tests Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/3ea9b8e4-633f-43c4-899f-e063ec576486 Co-authored-by: yxxhero <[email protected]> * test: fix issue-2599 integration script helmfile invocation Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/9452bb65-7086-459f-b5ae-0b00c1e021eb Co-authored-by: yxxhero <[email protected]> --------- Signed-off-by: yxxhero <[email protected]> Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 781d28a - Browse repository at this point
Copy the full SHA 781d28aView commit details -
fix: restore kubedog status progress output during tracking (#2602)
* fix: restore kubedog status progress output during tracking The refactor in commit bda57b7 that replaced multitrack.Multitrack() with individual resource trackers only read from Ready/Failed/Succeeded channels, ignoring Status, Added, EventMsg, PodLogChunk, PodError, and AddedPod channels. This caused kubedog status messages to no longer be displayed. Additionally, IgnoreLogs was not passed to tracker.Options, so the trackLogs setting was effectively ignored. This fix restores the original multitrack-style table display using the same kubedog utils.Table and indicators packages for: - Formatted status tables with DEPLOYMENT/REPLICAS/AVAILABLE/UP-TO-DATE columns - Pod sub-tables showing POD/READY/RESTARTS/STATUS with tree structure - ANSI color coding (green=ready, yellow=in-progress, red=failed) - Progress indicators showing value transitions (e.g. 1->3) - Waiting messages in blue Fixes #2601 Signed-off-by: yxxhero <[email protected]> * fix: address review feedback - caption coloring, termWidth, O(1) pod detection, display tests Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/147fc763-c3f2-4a7e-9591-6f972fb62667 Co-authored-by: yxxhero <[email protected]> * fix: use status.FailedReason for canary final display, fix test name typo Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/147fc763-c3f2-4a7e-9591-6f972fb62667 Co-authored-by: yxxhero <[email protected]> * fix: correct gci import grouping in display.go and display_test.go Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/7e8f8219-5979-44fb-9729-6138c3aae08b Co-authored-by: yxxhero <[email protected]> * fix: force ANSI color output in display_test.go for CI non-TTY environments Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/ff37ccd9-f4d1-4d42-a7d0-4903e2b9d253 Co-authored-by: yxxhero <[email protected]> --------- Signed-off-by: yxxhero <[email protected]> Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 27015e8 - Browse repository at this point
Copy the full SHA 27015e8View commit details
Commits on May 21, 2026
-
feat: show diff preview when sync --interactive is used (#2603)
* feat: show diff preview when sync --interactive is used Signed-off-by: vomba <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 2a1574b - Browse repository at this point
Copy the full SHA 2a1574bView commit details -
build(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7…
….32 (#2607) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.30 to 1.7.32. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](containerd/containerd@v1.7.30...v1.7.32) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-version: 1.7.32 dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 8e2ddb8 - Browse repository at this point
Copy the full SHA 8e2ddb8View commit details
Commits on May 22, 2026
-
feat: support HELMFILE_* env vars for more global flags (#2606)
* feat: support more HELMFILE_* env vars as flag fallbacks Adds env-var fallbacks for global flags, mirroring the existing HELMFILE_ENVIRONMENT / HELMFILE_KUBE_CONTEXT pattern: * --helm-binary -> HELMFILE_HELM_BINARY * --kustomize-binary -> HELMFILE_KUSTOMIZE_BINARY * --log-level -> HELMFILE_LOG_LEVEL * --debug -> HELMFILE_DEBUG (expecting "true" lower case) * --quiet -> HELMFILE_QUIET (expecting "true" lower case) * --no-color -> HELMFILE_NO_COLOR (expecting "true" lower case), additionally honors NO_COLOR per no-color.org (any non-empty value disables color) Flag values still take precedence; env vars are consulted only when the flag is unset. The string-flag default values ("helm", "kustomize", "info") move into the accessor methods so the env-var fallback can actually trigger when no flag is passed. Signed-off-by: Dominik Schmidt <[email protected]> * docs: mention new HELMFILE_* env vars in cli.md and templating.md Signed-off-by: Dominik Schmidt <[email protected]> * fix: make Color/NoColor/env interaction consistent Two issues with the env-aware NoColor() introduced together with HELMFILE_NO_COLOR / NO_COLOR support: 1. Color() consulted the raw GlobalOptions.NoColor field instead of NoColor(), so in a TTY with only the env set, Color() fell through to terminal autodetect and ValidateConfig() spuriously errored with "--color and --no-color cannot be specified at the same time". 2. NoColor() returned true via env even when --color was explicitly passed, so `helmfile --color` with NO_COLOR (or HELMFILE_NO_COLOR=true) in the environment hit the same ValidateConfig() error. A flag should always win over an env var. Fix both by routing Color() through NoColor() and giving NoColor() an explicit --color short-circuit. Regression tests added for both paths. Signed-off-by: Dominik Schmidt <[email protected]> --------- Signed-off-by: Dominik Schmidt <[email protected]>Configuration menu - View commit details
-
Copy full SHA for 33eadc9 - Browse repository at this point
Copy the full SHA 33eadc9View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v1.5.1...v1.5.2