fix: eliminate race condition in rewriteChartDependencies#2541
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes a concurrency bug in Helmfile’s chart preparation flow by ensuring rewriteChartDependencies no longer edits a shared local chart’s Chart.yaml in-place. Instead, when dependency path rewrites are needed, it operates on a per-call temporary copy of the chart directory, preventing concurrent goroutines from corrupting the source chart metadata (as reported in #2502).
Changes:
- Update
rewriteChartDependenciesto copy the chart directory to a temp location and rewrite the copy’sChart.yaml, returning the (possibly new) chart path plus a cleanup function. - Update
processChartificationto use the returned rewritten chart path. - Update/rename tests to validate the original chart is not modified and add a concurrency test that exercises the prior race scenario.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
pkg/state/state.go |
Avoids in-place mutation by rewriting Chart.yaml only in a temporary copied chart directory; updates caller to use returned path. |
pkg/state/chart_dependencies_rewrite_test.go |
Adjusts tests for new signature and adds coverage ensuring the original Chart.yaml remains unchanged under concurrent use. |
62f4d4a to
cf7e913
Compare
| if chartMeta.Dependencies[0].Name != "dep1" { | ||
| t.Errorf("expected dependency name 'dep1', got %q", chartMeta.Dependencies[0].Name) | ||
| t.Errorf("expected original chart name 'test-chart', got %q", chartMeta.Name) | ||
| } |
There was a problem hiding this comment.
chartMeta.Dependencies[0] is accessed without checking len(chartMeta.Dependencies), which can panic (e.g., if YAML unmarshals but the dependencies field is missing/empty due to corruption). Add an explicit length check (and ideally verify the dependency name) before indexing so the test fails with a clear assertion instead of an out-of-range panic.
| } | |
| } | |
| if len(chartMeta.Dependencies) == 0 { | |
| t.Fatalf("expected original Chart.yaml to contain at least one dependency, got %d", len(chartMeta.Dependencies)) | |
| } | |
| const wantDependencyName = "relative-chart" | |
| if chartMeta.Dependencies[0].Name != wantDependencyName { | |
| t.Errorf("expected first dependency name %q, got %q", wantDependencyName, chartMeta.Dependencies[0].Name) | |
| } |
cf7e913 to
e5faf9c
Compare
| rewrittenPath, restoreChart, err := st.rewriteChartDependencies(chartPath) | ||
| if err != nil { | ||
| return "", false, fmt.Errorf("failed to rewrite chart dependencies: %w", err) | ||
| } | ||
| chartPath = rewrittenPath | ||
| defer restoreChart() |
There was a problem hiding this comment.
The second return value from rewriteChartDependencies is now a cleanup that removes the temporary chart copy, but the local variable is still named restoreChart. Renaming it (and the deferred call) to something like cleanupTempChart/cleanupChartCopy would better reflect the new behavior and avoid confusion with the previous “restore original Chart.yaml” semantics.
| rewrittenPath, restoreChart, err := st.rewriteChartDependencies(chartPath) | |
| if err != nil { | |
| return "", false, fmt.Errorf("failed to rewrite chart dependencies: %w", err) | |
| } | |
| chartPath = rewrittenPath | |
| defer restoreChart() | |
| rewrittenPath, cleanupTempChart, err := st.rewriteChartDependencies(chartPath) | |
| if err != nil { | |
| return "", false, fmt.Errorf("failed to rewrite chart dependencies: %w", err) | |
| } | |
| chartPath = rewrittenPath | |
| defer cleanupTempChart() |
e5faf9c to
e0326b9
Compare
| tempDir, err := os.MkdirTemp("", "chart-deps-rewrite-*") | ||
| if err != nil { | ||
| return chartPath, func() {}, fmt.Errorf("failed to create temp directory for chart rewrite: %w", err) | ||
| } | ||
|
|
||
| if err := os.WriteFile(chartYamlPath, updatedData, 0644); err != nil { | ||
| // File may be truncated/partially written; restore original content before releasing the lock. | ||
| if restoreErr := os.WriteFile(chartYamlPath, originalContent, 0644); restoreErr != nil { | ||
| st.logger.Warnf("Failed to restore Chart.yaml at %s after write error (%v): %v", chartYamlPath, err, restoreErr) | ||
| if err := st.fs.CopyDir(chartPath, tempDir); err != nil { | ||
| if removeErr := os.RemoveAll(tempDir); removeErr != nil { | ||
| st.logger.Warnf("Failed to remove temp chart directory %s: %v", tempDir, removeErr) | ||
| } | ||
| mu.Unlock() | ||
| return func() {}, fmt.Errorf("failed to write Chart.yaml: %w", err) | ||
| return chartPath, func() {}, fmt.Errorf("failed to copy chart to temp directory: %w", err) | ||
| } | ||
|
|
||
| tempChartYamlPath := filepath.Join(tempDir, "Chart.yaml") | ||
| if err := os.WriteFile(tempChartYamlPath, updatedData, 0644); err != nil { | ||
| if removeErr := os.RemoveAll(tempDir); removeErr != nil { | ||
| st.logger.Warnf("Failed to remove temp chart directory %s: %v", tempDir, removeErr) | ||
| } | ||
| return chartPath, func() {}, fmt.Errorf("failed to write Chart.yaml: %w", err) | ||
| } |
There was a problem hiding this comment.
The function now relies more heavily on os.* for temp dir creation, file writes, and cleanup while simultaneously using st.fs.CopyDir, which undermines the filesystem abstraction and makes it harder to support non-OS filesystems consistently. Consider routing temp-dir creation, file read/write, and remove-all through st.fs (or expanding the fs interface with MkdirTemp/RemoveAll/WriteFile equivalents) so this logic remains portable and uniformly testable.
| if err := st.fs.CopyDir(chartPath, tempDir); err != nil { | ||
| if removeErr := os.RemoveAll(tempDir); removeErr != nil { | ||
| st.logger.Warnf("Failed to remove temp chart directory %s: %v", tempDir, removeErr) | ||
| } | ||
| mu.Unlock() | ||
| return func() {}, fmt.Errorf("failed to write Chart.yaml: %w", err) | ||
| return chartPath, func() {}, fmt.Errorf("failed to copy chart to temp directory: %w", err) | ||
| } |
There was a problem hiding this comment.
Copying the entire chart directory into a fresh temp directory for every rewrite can become expensive when many releases reference the same chart (especially concurrently)—it fixes the data race but may add substantial IO and temp space pressure. A tangible improvement is to introduce a short-lived cache/singleflight keyed by chartPath that creates at most one rewritten temp copy per unique chart per run (with ref-counted cleanup), so concurrent callers can share the same rewritten copy without touching the original.
| rewrittenPath, cleanup, err := st.rewriteChartDependencies(tempDir) | ||
| if err != nil { | ||
| errCh <- err | ||
| return | ||
| } | ||
| defer cleanup() | ||
|
|
||
| data, readErr := os.ReadFile(filepath.Join(rewrittenPath, "Chart.yaml")) | ||
| if readErr != nil { | ||
| errCh <- readErr | ||
| cleanup() | ||
| return | ||
| } | ||
|
|
||
| type ChartDependency struct { | ||
| Name string `yaml:"name"` | ||
| Repository string `yaml:"repository"` | ||
| Version string `yaml:"version"` | ||
| } | ||
| type ChartMeta struct { | ||
| APIVersion string `yaml:"apiVersion"` | ||
| Name string `yaml:"name"` | ||
| Version string `yaml:"version"` | ||
| Dependencies []ChartDependency `yaml:"dependencies,omitempty"` | ||
| } | ||
|
|
||
| var meta ChartMeta | ||
| if unmarshalErr := yaml.Unmarshal(data, &meta); unmarshalErr != nil { | ||
| errCh <- unmarshalErr | ||
| cleanup() | ||
| return | ||
| } | ||
|
|
||
| if meta.Name != "test-chart" { | ||
| errCh <- fmt.Errorf("expected chart name 'test-chart', got %q", meta.Name) | ||
| cleanup() | ||
| return | ||
| } | ||
|
|
||
| cleanup() |
There was a problem hiding this comment.
The test manually calls cleanup() along multiple early-return paths; this works but is easy to regress as the test evolves. Consider defer cleanup() immediately after the successful call to rewriteChartDependencies and then remove the repeated cleanup() calls—this ensures the temp dir is cleaned up even if additional assertions are added later and fail early.
e0326b9 to
8a28a5f
Compare
| // Check cache: if another goroutine already created a rewritten copy for this chartPath, reuse it. | ||
| if cached, ok := rewrittenChartCache.Load(chartPath); ok { | ||
| st.logger.Debugf("Reusing cached rewritten chart at %s for %s", cached.(string), chartPath) | ||
| return cached.(string), func() {}, nil | ||
| } | ||
|
|
||
| // Use per-path mutex to serialize temp-copy creation for the same chart path. | ||
| mu := st.getNamedRWMutex(chartPath) | ||
| mu.Lock() | ||
| defer mu.Unlock() | ||
|
|
||
| // Double-check after acquiring lock. | ||
| if cached, ok := rewrittenChartCache.Load(chartPath); ok { | ||
| st.logger.Debugf("Reusing cached rewritten chart at %s for %s", cached.(string), chartPath) | ||
| return cached.(string), func() {}, nil | ||
| } | ||
|
|
There was a problem hiding this comment.
rewrittenChartCache is keyed only by chartPath, so once a rewritten copy is cached it will be reused even if the chart directory (or its Chart.yaml) changes later in the run (e.g., via per-release prepare hooks that mutate local charts). That can make subsequent releases operate on a stale copy and produce surprising results.
If caching is kept, consider keying by something that reflects Chart.yaml content (hash/mtime) or limiting cache scope/lifetime to a single immutable preparation phase; otherwise, prefer creating a fresh temp copy per call.
| // Check cache: if another goroutine already created a rewritten copy for this chartPath, reuse it. | |
| if cached, ok := rewrittenChartCache.Load(chartPath); ok { | |
| st.logger.Debugf("Reusing cached rewritten chart at %s for %s", cached.(string), chartPath) | |
| return cached.(string), func() {}, nil | |
| } | |
| // Use per-path mutex to serialize temp-copy creation for the same chart path. | |
| mu := st.getNamedRWMutex(chartPath) | |
| mu.Lock() | |
| defer mu.Unlock() | |
| // Double-check after acquiring lock. | |
| if cached, ok := rewrittenChartCache.Load(chartPath); ok { | |
| st.logger.Debugf("Reusing cached rewritten chart at %s for %s", cached.(string), chartPath) | |
| return cached.(string), func() {}, nil | |
| } | |
| // Always create a fresh rewritten copy for the current chart contents. | |
| // Reusing a cached copy keyed only by chartPath can return stale data when | |
| // prepare hooks or other steps mutate the local chart directory during the run. |
| defer cleanup() | ||
|
|
There was a problem hiding this comment.
These tests defer the cleanup returned by rewriteChartDependencies, but the current implementation always returns a no-op cleanup even when it creates a rewritten temp chart directory. That means the tests will leave temp directories behind on the machine running the suite.
Once cleanup is implemented to remove the temp copy (and clear any cache entry), it would be good to assert the rewrittenPath directory is removed after cleanup; alternatively, explicitly os.RemoveAll(rewrittenPath) in the tests when rewrittenPath != tempDir.
| defer cleanup() | |
| t.Cleanup(func() { | |
| cleanup() | |
| if rewrittenPath == tempDir { | |
| return | |
| } | |
| if _, statErr := os.Stat(rewrittenPath); statErr != nil { | |
| if os.IsNotExist(statErr) { | |
| return | |
| } | |
| t.Errorf("failed to stat rewritten chart path during cleanup: %v", statErr) | |
| return | |
| } | |
| if err := os.RemoveAll(rewrittenPath); err != nil { | |
| t.Errorf("failed to remove rewritten chart path %q: %v", rewrittenPath, err) | |
| return | |
| } | |
| if _, statErr := os.Stat(rewrittenPath); !os.IsNotExist(statErr) { | |
| t.Errorf("expected rewritten chart path %q to be removed, stat err: %v", rewrittenPath, statErr) | |
| } | |
| }) |
8a28a5f to
db3291c
Compare
…chart before modifying Instead of modifying the original Chart.yaml in-place (which causes race conditions when multiple releases reference the same local chart), copy the chart to a temporary directory and rewrite the copy's dependencies. This eliminates the need for per-chart mutex locks and prevents file corruption when concurrent goroutines process releases sharing the same local chart. Fixes #2502 Signed-off-by: yxxhero <[email protected]>
a33138c to
1c88125
Compare
- Handle non-NotExist errors from st.fs.Stat to surface permission/IO failures - Reword function doc to clarify temp copy is conditional on rewrite being needed - Assert rewrittenPath vs tempDir based on expectModified in test table Signed-off-by: yxxhero <[email protected]>
1c88125 to
5155ea5
Compare
… local chart Signed-off-by: yxxhero <[email protected]>
Signed-off-by: yxxhero <[email protected]>
Signed-off-by: yxxhero <[email protected]>
Signed-off-by: yxxhero <[email protected]>
Signed-off-by: yxxhero <[email protected]>
| func DefaultFileSystem() *FileSystem { | ||
| dfs := FileSystem{ | ||
| ReadDir: os.ReadDir, | ||
| WriteFile: os.WriteFile, | ||
| DeleteFile: os.Remove, | ||
| MkdirTemp: os.MkdirTemp, | ||
| RemoveAll: os.RemoveAll, | ||
| Glob: filepath.Glob, |
There was a problem hiding this comment.
DefaultFileSystem now wires new injectable funcs (WriteFile/MkdirTemp/RemoveAll), but the existing filesystem unit test that checks DefaultFileSystem fields are non-nil doesn’t cover these additions. Consider extending that test to assert these new function pointers are set, to prevent future nil regressions.
…m test Signed-off-by: yxxhero <[email protected]>
| releases: | ||
| - name: app | ||
| chart: helm/my-chart | ||
| - name: app-2 | ||
| chart: helm/my-chart | ||
| - name: app-3 | ||
| chart: helm/my-chart | ||
| - name: app-4 | ||
| chart: helm/my-chart | ||
| - name: app-5 | ||
| chart: helm/my-chart |
There was a problem hiding this comment.
This integration test config has multiple releases sharing the same local chart, but it doesn't include any chartify trigger (e.g., forceNamespace/jsonPatches/strategicMergePatches/transformers). rewriteChartDependencies is only called from processChartification, which only runs when PrepareChartify returns non-nil, so this test may not exercise the race-condition fix and could pass even on the buggy behavior. Consider adding a minimal chartify trigger (e.g., forceNamespace: default) to each release to ensure the concurrent chartify path (and dependency rewrite) is executed.
…test Signed-off-by: yxxhero <[email protected]>
…th strategic merge patches The race condition test values.yaml had templates at the top level instead of scoped under the raw subchart key, causing helm template to produce no output and chartify's ReplaceWithRendered to fail with an empty helmx.1.rendered directory. Also align the ConfigMap name to match the strategicMergePatches target. Signed-off-by: yxxhero <[email protected]>
…) (#32) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [aqua:helmfile/helmfile](https://github.com/helmfile/helmfile) | minor | `1.4.1` → `1.5.2` | --- ### Release Notes <details> <summary>helmfile/helmfile (aqua:helmfile/helmfile)</summary> ### [`v1.5.2`](https://github.com/helmfile/helmfile/releases/tag/v1.5.2) [Compare Source](helmfile/helmfile@v1.5.1...v1.5.2) #### What's Changed - Bump Helm support to 3.21.0 and 4.2.0 by [@​Copilot](https://github.com/Copilot) in [#​2588](helmfile/helmfile#2588) - bump helm-diff to v3.15.7 by [@​Copilot](https://github.com/Copilot) in [#​2591](helmfile/helmfile#2591) - fix: refresh Chart.lock after rewriting file:// dependencies by [@​sstarcher](https://github.com/sstarcher) in [#​2587](helmfile/helmfile#2587) - feat: support HELMFILE\_KUBE\_CONTEXT env var for default kube context by [@​dschmidt](https://github.com/dschmidt) in [#​2593](helmfile/helmfile#2593) - feat: support HELMFILE\_NAMESPACE env var for default namespace by [@​dschmidt](https://github.com/dschmidt) in [#​2592](helmfile/helmfile#2592) - fix: normalize dependency chart path before DirectoryExistsAt check by [@​yxxhero](https://github.com/yxxhero) in [#​2598](helmfile/helmfile#2598) - Add jsonPatches regression coverage for chartify lookup rendering by [@​Copilot](https://github.com/Copilot) in [#​2586](helmfile/helmfile#2586) - feat: add defaultInherit for automatic release template inheritance by [@​yxxhero](https://github.com/yxxhero) in [#​2600](helmfile/helmfile#2600) - fix: restore kubedog status progress output during tracking by [@​yxxhero](https://github.com/yxxhero) in [#​2602](helmfile/helmfile#2602) - feat: show diff preview when sync --interactive is used by [@​vomba](https://github.com/vomba) in [#​2603](helmfile/helmfile#2603) - build(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.32 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2607](helmfile/helmfile#2607) - feat: support HELMFILE\_\* env vars for more global flags by [@​dschmidt](https://github.com/dschmidt) in [#​2606](helmfile/helmfile#2606) #### New Contributors - [@​vomba](https://github.com/vomba) made their first contribution in [#​2603](helmfile/helmfile#2603) **Full Changelog**: <helmfile/helmfile@v1.5.1...v1.5.2> ### [`v1.5.1`](https://github.com/helmfile/helmfile/releases/tag/v1.5.1) [Compare Source](helmfile/helmfile@v1.5.0...v1.5.1) #### What's Changed - fix: add trackFailOnError option to control kubedog exit code by [@​yxxhero](https://github.com/yxxhero) in [#​2576](helmfile/helmfile#2576) - docs: update helmfile skill to reflect v1.1 documentation by [@​yxxhero](https://github.com/yxxhero) in [#​2577](helmfile/helmfile#2577) - fix(state): resolve OCI repo prefix in ad-hoc release dependencies by [@​dschmidt](https://github.com/dschmidt) in [#​2579](helmfile/helmfile#2579) - feat(state): add mergeStrategy: fallback for first-file-wins env values by [@​dschmidt](https://github.com/dschmidt) in [#​2578](helmfile/helmfile#2578) - Expose internal apis by [@​ceriath](https://github.com/ceriath) in [#​2520](helmfile/helmfile#2520) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.100.1 to 1.101.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2581](helmfile/helmfile#2581) - chore: Deduplicate preparation code of sync and apply by [@​ceriath](https://github.com/ceriath) in [#​2523](helmfile/helmfile#2523) - build(deps): bump gitpython from 3.1.47 to 3.1.49 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2582](helmfile/helmfile#2582) - chore: Emit "cleanup" events later to match the behavior in "apply" by [@​ceriath](https://github.com/ceriath) in [#​2522](helmfile/helmfile#2522) - build(deps): bump golang.org/x/term from 0.42.0 to 0.43.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2584](helmfile/helmfile#2584) - build(deps): bump gitpython from 3.1.49 to 3.1.50 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2585](helmfile/helmfile#2585) - fix: template helmDefaults.postRendererArgs with release data by [@​yxxhero](https://github.com/yxxhero) in [#​2583](helmfile/helmfile#2583) **Full Changelog**: <helmfile/helmfile@v1.5.0...v1.5.1> ### [`v1.5.0`](https://github.com/helmfile/helmfile/releases/tag/v1.5.0) [Compare Source](helmfile/helmfile@v1.4.5...v1.5.0) #### What's Changed - feat: add --write-output flag to helmfile fetch for air-gapped environments by [@​yxxhero](https://github.com/yxxhero) in [#​2572](helmfile/helmfile#2572) - feat: add 'create' subcommand to scaffold helmfile deployment projects by [@​yxxhero](https://github.com/yxxhero) in [#​2574](helmfile/helmfile#2574) - docs: restructure documentation and improve newcomer experience by [@​yxxhero](https://github.com/yxxhero) in [#​2573](helmfile/helmfile#2573) - docs: deduplicate Technical Details sections in values-and-merging.md by [@​yxxhero](https://github.com/yxxhero) in [#​2575](helmfile/helmfile#2575) **Full Changelog**: <helmfile/helmfile@v1.4.5...v1.5.0> ### [`v1.4.5`](https://github.com/helmfile/helmfile/releases/tag/v1.4.5) [Compare Source](helmfile/helmfile@v1.4.4...v1.4.5) #### What's Changed - build(deps): bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2524](helmfile/helmfile#2524) - chore: rename variables to match in apply and sync by [@​ceriath](https://github.com/ceriath) in [#​2521](helmfile/helmfile#2521) - chore: bump Helm to v4.1.4 by [@​Copilot](https://github.com/Copilot) in [#​2525](helmfile/helmfile#2525) - build(deps): bump golang.org/x/term from 0.41.0 to 0.42.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2529](helmfile/helmfile#2529) - bump helm v3.20.1 to v3.20.2 by [@​Copilot](https://github.com/Copilot) in [#​2530](helmfile/helmfile#2530) - build(deps): bump github.com/helmfile/vals from 0.43.8 to 0.43.9 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2533](helmfile/helmfile#2533) - Update Go from 1.25.8 to 1.26.2 by [@​Copilot](https://github.com/Copilot) in [#​2535](helmfile/helmfile#2535) - fix: boolean false overrides dropped in multi-document helmfiles ([#​2527](helmfile/helmfile#2527)) by [@​yxxhero](https://github.com/yxxhero) in [#​2532](helmfile/helmfile#2532) - build(deps): bump github.com/helmfile/chartify from 0.26.2 to 0.26.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2538](helmfile/helmfile#2538) - fix: add mutex lock for concurrent rewriteChartDependencies access by [@​yxxhero](https://github.com/yxxhero) in [#​2509](helmfile/helmfile#2509) - fix: update state values files handling to replace arrays instead of merging by [@​Moglum](https://github.com/Moglum) in [#​2537](helmfile/helmfile#2537) - fix: helmDefaults.postRendererArgs not passed to helm commands by [@​yxxhero](https://github.com/yxxhero) in [#​2510](helmfile/helmfile#2510) - enabledns flags available on template command by [@​Diliz](https://github.com/Diliz) in [#​2511](helmfile/helmfile#2511) - build(deps): bump k8s.io/apimachinery from 0.35.3 to 0.35.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2540](helmfile/helmfile#2540) - build(deps): bump k8s.io/client-go from 0.35.3 to 0.35.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2539](helmfile/helmfile#2539) - build(deps): bump github.com/zclconf/go-cty from 1.18.0 to 1.18.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2542](helmfile/helmfile#2542) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.14 to 1.32.15 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2543](helmfile/helmfile#2543) - fix: eliminate race condition in rewriteChartDependencies by [@​yxxhero](https://github.com/yxxhero) in [#​2541](helmfile/helmfile#2541) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.99.0 to 1.99.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2546](helmfile/helmfile#2546) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.15 to 1.32.16 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2547](helmfile/helmfile#2547) - build(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2553](helmfile/helmfile#2553) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.99.1 to 1.100.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2552](helmfile/helmfile#2552) - Fix helmfile init failing to update outdated helm plugins with Helm v4 by [@​Copilot](https://github.com/Copilot) in [#​2554](helmfile/helmfile#2554) - fix: skip subhelmfiles when selectors conflict with CLI selectors by [@​yxxhero](https://github.com/yxxhero) in [#​2545](helmfile/helmfile#2545) - build(deps): bump gitpython from 3.1.41 to 3.1.47 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2555](helmfile/helmfile#2555) - fix: apply post-renderer to output-dir-template output by [@​yxxhero](https://github.com/yxxhero) in [#​2531](helmfile/helmfile#2531) - build(deps): bump go.uber.org/zap from 1.27.1 to 1.28.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2557](helmfile/helmfile#2557) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.100.0 to 1.100.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2558](helmfile/helmfile#2558) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.16 to 1.32.17 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2559](helmfile/helmfile#2559) - update readme add install from source by [@​Sianao](https://github.com/Sianao) in [#​2561](helmfile/helmfile#2561) - Honor `skipSchemaValidation` during chartification when `forceNamespace` is set by [@​Copilot](https://github.com/Copilot) in [#​2550](helmfile/helmfile#2550) - build(deps): bump github.com/Masterminds/semver/v3 from 3.4.0 to 3.5.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2565](helmfile/helmfile#2565) - fix: deduplicate chart dependencies in helmfile.lock by [@​yxxhero](https://github.com/yxxhero) in [#​2567](helmfile/helmfile#2567) - build(deps): replace werf/kubedog-for-werf-helm with werf/kubedog by [@​yxxhero](https://github.com/yxxhero) in [#​2568](helmfile/helmfile#2568) - build(deps): bump helmfile/vals from v0.43.9 to v0.44.0 by [@​yxxhero](https://github.com/yxxhero) in [#​2569](helmfile/helmfile#2569) - fix: use --post-renderer-args=VALUE format to prevent Helm flag parsing failure by [@​yxxhero](https://github.com/yxxhero) in [#​2570](helmfile/helmfile#2570) #### New Contributors - [@​Moglum](https://github.com/Moglum) made their first contribution in [#​2537](helmfile/helmfile#2537) - [@​Diliz](https://github.com/Diliz) made their first contribution in [#​2511](helmfile/helmfile#2511) - [@​Sianao](https://github.com/Sianao) made their first contribution in [#​2561](helmfile/helmfile#2561) **Full Changelog**: <helmfile/helmfile@v1.4.4...v1.4.5> ### [`v1.4.4`](https://github.com/helmfile/helmfile/releases/tag/v1.4.4) [Compare Source](helmfile/helmfile@v1.4.3...v1.4.4) #### What's Changed - build(deps): bump azure/setup-helm from 4.3.1 to 5.0.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2499](helmfile/helmfile#2499) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.1 to 1.97.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2500](helmfile/helmfile#2500) - fix: helmfile fetch fails for kustomization directories by [@​yxxhero](https://github.com/yxxhero) in [#​2504](helmfile/helmfile#2504) - fix: keep all chart dependencies key / values by [@​champtar](https://github.com/champtar) in [#​2501](helmfile/helmfile#2501) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.2 to 1.97.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2505](helmfile/helmfile#2505) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.12 to 1.32.13 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2506](helmfile/helmfile#2506) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.3 to 1.98.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2512](helmfile/helmfile#2512) - build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2513](helmfile/helmfile#2513) - chore: update go version to 1.25.8 by [@​eadred](https://github.com/eadred) in [#​2514](helmfile/helmfile#2514) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.13 to 1.32.14 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2516](helmfile/helmfile#2516) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.98.0 to 1.99.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2517](helmfile/helmfile#2517) - build(deps): bump github.com/helmfile/vals from 0.43.7 to 0.43.8 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2518](helmfile/helmfile#2518) #### New Contributors - [@​champtar](https://github.com/champtar) made their first contribution in [#​2501](helmfile/helmfile#2501) - [@​eadred](https://github.com/eadred) made their first contribution in [#​2514](helmfile/helmfile#2514) **Full Changelog**: <helmfile/helmfile@v1.4.3...v1.4.4> ### [`v1.4.3`](https://github.com/helmfile/helmfile/releases/tag/v1.4.3) [Compare Source](helmfile/helmfile@v1.4.2...v1.4.3) #### What's Changed - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.0 to 1.97.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2488](helmfile/helmfile#2488) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.11 to 1.32.12 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2487](helmfile/helmfile#2487) - Fix interactive apply asks in no change situation by [@​tarrow](https://github.com/tarrow) in [#​945](helmfile/helmfile#945) - build(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2490](helmfile/helmfile#2490) - fix: helmfile list now reflects version from helmfile.lock by [@​yxxhero](https://github.com/yxxhero) in [#​2486](helmfile/helmfile#2486) - build(deps): bump k8s.io/client-go from 0.35.2 to 0.35.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2492](helmfile/helmfile#2492) - build(deps): bump github.com/fatih/color from 1.18.0 to 1.19.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2494](helmfile/helmfile#2494) - fix: cleanup hooks not receiving error signal by [@​yxxhero](https://github.com/yxxhero) in [#​2475](helmfile/helmfile#2475) - fix: pass --timeout flag through to helm for sync and apply by [@​hristiy4n](https://github.com/hristiy4n) in [#​2495](helmfile/helmfile#2495) - fix: error on missing secret key when using vals by [@​yxxhero](https://github.com/yxxhero) in [#​2496](helmfile/helmfile#2496) - build: update helm-diff to v3.15.3 by [@​yxxhero](https://github.com/yxxhero) in [#​2498](helmfile/helmfile#2498) - feat: add an arg that passing description to `helm upgrade` command by [@​swimablefish](https://github.com/swimablefish) in [#​2497](helmfile/helmfile#2497) #### New Contributors - [@​tarrow](https://github.com/tarrow) made their first contribution in [#​945](helmfile/helmfile#945) - [@​hristiy4n](https://github.com/hristiy4n) made their first contribution in [#​2495](helmfile/helmfile#2495) - [@​swimablefish](https://github.com/swimablefish) made their first contribution in [#​2497](helmfile/helmfile#2497) **Full Changelog**: <helmfile/helmfile@v1.4.2...v1.4.3> ### [`v1.4.2`](https://github.com/helmfile/helmfile/releases/tag/v1.4.2) [Compare Source](helmfile/helmfile@v1.4.1...v1.4.2) #### What's Changed - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.96.2 to 1.96.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2456](helmfile/helmfile#2456) - build(deps): bump docker/login-action from 3 to 4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2454](helmfile/helmfile#2454) - build(deps): bump docker/setup-qemu-action from 3 to 4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2453](helmfile/helmfile#2453) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.10 to 1.32.11 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2455](helmfile/helmfile#2455) - Add CHANGELOG.md by [@​PhilipLudington](https://github.com/PhilipLudington) in [#​2457](helmfile/helmfile#2457) - build(deps): bump docker/setup-buildx-action from 3 to 4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2462](helmfile/helmfile#2462) - build(deps): bump markdown from 3.6 to 3.8.1 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2463](helmfile/helmfile#2463) - build(deps): bump docker/build-push-action from 6 to 7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2469](helmfile/helmfile#2469) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.96.3 to 1.96.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2470](helmfile/helmfile#2470) - build(deps): bump docker/metadata-action from 5 to 6 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2468](helmfile/helmfile#2468) - feat: add helm-legacy track mode for Helm v4 compatibility by [@​yxxhero](https://github.com/yxxhero) in [#​2466](helmfile/helmfile#2466) - docs: add comprehensive values merging and data flow guide by [@​yxxhero](https://github.com/yxxhero) in [#​2461](helmfile/helmfile#2461) - fix: nested helmfile values should replace arrays, not merge element-by-element by [@​aditmeno](https://github.com/aditmeno) in [#​2458](helmfile/helmfile#2458) - build(deps): bump go.yaml.in/yaml/v2 from 2.4.3 to 2.4.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2473](helmfile/helmfile#2473) - build(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2472](helmfile/helmfile#2472) - fix: use --force-replace flag for Helm 4 instead of deprecated --force by [@​yxxhero](https://github.com/yxxhero) in [#​2477](helmfile/helmfile#2477) - build(deps): bump golang.org/x/term from 0.40.0 to 0.41.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2479](helmfile/helmfile#2479) - build(deps): bump github.com/helmfile/vals from 0.43.6 to 0.43.7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2478](helmfile/helmfile#2478) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.96.4 to 1.97.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2484](helmfile/helmfile#2484) - build(deps): bump Helm from v4.1.1 to v4.1.3 by [@​yxxhero](https://github.com/yxxhero) in [#​2481](helmfile/helmfile#2481) - feat: add --force-conflicts flag support for Helm 4 by [@​yxxhero](https://github.com/yxxhero) in [#​2480](helmfile/helmfile#2480) #### New Contributors - [@​PhilipLudington](https://github.com/PhilipLudington) made their first contribution in [#​2457](helmfile/helmfile#2457) **Full Changelog**: <helmfile/helmfile@v1.4.1...v1.4.2> </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/London) - 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 is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0My4xOTUuMSIsInVwZGF0ZWRJblZlciI6IjQzLjE5NS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL21pbm9yIl19--> Reviewed-on: https://forgejo.hayden.moe/hayden/phoebe/pulls/32
…) (#42) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [aqua:helmfile/helmfile](https://github.com/helmfile/helmfile) | minor | `1.4.1` → `1.5.3` | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/28) for more information. --- ### Release Notes <details> <summary>helmfile/helmfile (aqua:helmfile/helmfile)</summary> ### [`v1.5.3`](https://github.com/helmfile/helmfile/releases/tag/v1.5.3) [Compare Source](helmfile/helmfile@v1.5.2...v1.5.3) #### What's Changed - build(deps): bump github.com/gookit/color from 1.5.4 to 1.6.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2608](helmfile/helmfile#2608) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.17 to 1.32.18 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2610](helmfile/helmfile#2610) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.101.0 to 1.102.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2612](helmfile/helmfile#2612) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.102.0 to 1.102.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2613](helmfile/helmfile#2613) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.18 to 1.32.20 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2614](helmfile/helmfile#2614) - fix: support array of maps in set/setTemplate values by [@​yxxhero](https://github.com/yxxhero) in [#​2615](helmfile/helmfile#2615) - fix: remove naked return by returning expected values by [@​ceriath](https://github.com/ceriath) in [#​2617](helmfile/helmfile#2617) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.102.1 to 1.103.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2619](helmfile/helmfile#2619) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.20 to 1.32.21 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2618](helmfile/helmfile#2618) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.103.0 to 1.103.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2620](helmfile/helmfile#2620) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.21 to 1.32.22 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2621](helmfile/helmfile#2621) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.103.1 to 1.103.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2622](helmfile/helmfile#2622) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.22 to 1.32.23 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2623](helmfile/helmfile#2623) - Bump helm-diff to v3.15.8 across runtime defaults and execution environments by [@​Copilot](https://github.com/Copilot) in [#​2624](helmfile/helmfile#2624) - build(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2625](helmfile/helmfile#2625) **Full Changelog**: <helmfile/helmfile@v1.5.2...v1.5.3> ### [`v1.5.2`](https://github.com/helmfile/helmfile/releases/tag/v1.5.2) [Compare Source](helmfile/helmfile@v1.5.1...v1.5.2) #### What's Changed - Bump Helm support to 3.21.0 and 4.2.0 by [@​Copilot](https://github.com/Copilot) in [#​2588](helmfile/helmfile#2588) - bump helm-diff to v3.15.7 by [@​Copilot](https://github.com/Copilot) in [#​2591](helmfile/helmfile#2591) - fix: refresh Chart.lock after rewriting file:// dependencies by [@​sstarcher](https://github.com/sstarcher) in [#​2587](helmfile/helmfile#2587) - feat: support HELMFILE\_KUBE\_CONTEXT env var for default kube context by [@​dschmidt](https://github.com/dschmidt) in [#​2593](helmfile/helmfile#2593) - feat: support HELMFILE\_NAMESPACE env var for default namespace by [@​dschmidt](https://github.com/dschmidt) in [#​2592](helmfile/helmfile#2592) - fix: normalize dependency chart path before DirectoryExistsAt check by [@​yxxhero](https://github.com/yxxhero) in [#​2598](helmfile/helmfile#2598) - Add jsonPatches regression coverage for chartify lookup rendering by [@​Copilot](https://github.com/Copilot) in [#​2586](helmfile/helmfile#2586) - feat: add defaultInherit for automatic release template inheritance by [@​yxxhero](https://github.com/yxxhero) in [#​2600](helmfile/helmfile#2600) - fix: restore kubedog status progress output during tracking by [@​yxxhero](https://github.com/yxxhero) in [#​2602](helmfile/helmfile#2602) - feat: show diff preview when sync --interactive is used by [@​vomba](https://github.com/vomba) in [#​2603](helmfile/helmfile#2603) - build(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.32 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2607](helmfile/helmfile#2607) - feat: support HELMFILE\_\* env vars for more global flags by [@​dschmidt](https://github.com/dschmidt) in [#​2606](helmfile/helmfile#2606) #### New Contributors - [@​vomba](https://github.com/vomba) made their first contribution in [#​2603](helmfile/helmfile#2603) **Full Changelog**: <helmfile/helmfile@v1.5.1...v1.5.2> ### [`v1.5.1`](https://github.com/helmfile/helmfile/releases/tag/v1.5.1) [Compare Source](helmfile/helmfile@v1.5.0...v1.5.1) #### What's Changed - fix: add trackFailOnError option to control kubedog exit code by [@​yxxhero](https://github.com/yxxhero) in [#​2576](helmfile/helmfile#2576) - docs: update helmfile skill to reflect v1.1 documentation by [@​yxxhero](https://github.com/yxxhero) in [#​2577](helmfile/helmfile#2577) - fix(state): resolve OCI repo prefix in ad-hoc release dependencies by [@​dschmidt](https://github.com/dschmidt) in [#​2579](helmfile/helmfile#2579) - feat(state): add mergeStrategy: fallback for first-file-wins env values by [@​dschmidt](https://github.com/dschmidt) in [#​2578](helmfile/helmfile#2578) - Expose internal apis by [@​ceriath](https://github.com/ceriath) in [#​2520](helmfile/helmfile#2520) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.100.1 to 1.101.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2581](helmfile/helmfile#2581) - chore: Deduplicate preparation code of sync and apply by [@​ceriath](https://github.com/ceriath) in [#​2523](helmfile/helmfile#2523) - build(deps): bump gitpython from 3.1.47 to 3.1.49 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2582](helmfile/helmfile#2582) - chore: Emit "cleanup" events later to match the behavior in "apply" by [@​ceriath](https://github.com/ceriath) in [#​2522](helmfile/helmfile#2522) - build(deps): bump golang.org/x/term from 0.42.0 to 0.43.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2584](helmfile/helmfile#2584) - build(deps): bump gitpython from 3.1.49 to 3.1.50 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2585](helmfile/helmfile#2585) - fix: template helmDefaults.postRendererArgs with release data by [@​yxxhero](https://github.com/yxxhero) in [#​2583](helmfile/helmfile#2583) **Full Changelog**: <helmfile/helmfile@v1.5.0...v1.5.1> ### [`v1.5.0`](https://github.com/helmfile/helmfile/releases/tag/v1.5.0) [Compare Source](helmfile/helmfile@v1.4.5...v1.5.0) #### What's Changed - feat: add --write-output flag to helmfile fetch for air-gapped environments by [@​yxxhero](https://github.com/yxxhero) in [#​2572](helmfile/helmfile#2572) - feat: add 'create' subcommand to scaffold helmfile deployment projects by [@​yxxhero](https://github.com/yxxhero) in [#​2574](helmfile/helmfile#2574) - docs: restructure documentation and improve newcomer experience by [@​yxxhero](https://github.com/yxxhero) in [#​2573](helmfile/helmfile#2573) - docs: deduplicate Technical Details sections in values-and-merging.md by [@​yxxhero](https://github.com/yxxhero) in [#​2575](helmfile/helmfile#2575) **Full Changelog**: <helmfile/helmfile@v1.4.5...v1.5.0> ### [`v1.4.5`](https://github.com/helmfile/helmfile/releases/tag/v1.4.5) [Compare Source](helmfile/helmfile@v1.4.4...v1.4.5) #### What's Changed - build(deps): bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2524](helmfile/helmfile#2524) - chore: rename variables to match in apply and sync by [@​ceriath](https://github.com/ceriath) in [#​2521](helmfile/helmfile#2521) - chore: bump Helm to v4.1.4 by [@​Copilot](https://github.com/Copilot) in [#​2525](helmfile/helmfile#2525) - build(deps): bump golang.org/x/term from 0.41.0 to 0.42.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2529](helmfile/helmfile#2529) - bump helm v3.20.1 to v3.20.2 by [@​Copilot](https://github.com/Copilot) in [#​2530](helmfile/helmfile#2530) - build(deps): bump github.com/helmfile/vals from 0.43.8 to 0.43.9 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2533](helmfile/helmfile#2533) - Update Go from 1.25.8 to 1.26.2 by [@​Copilot](https://github.com/Copilot) in [#​2535](helmfile/helmfile#2535) - fix: boolean false overrides dropped in multi-document helmfiles ([#​2527](helmfile/helmfile#2527)) by [@​yxxhero](https://github.com/yxxhero) in [#​2532](helmfile/helmfile#2532) - build(deps): bump github.com/helmfile/chartify from 0.26.2 to 0.26.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2538](helmfile/helmfile#2538) - fix: add mutex lock for concurrent rewriteChartDependencies access by [@​yxxhero](https://github.com/yxxhero) in [#​2509](helmfile/helmfile#2509) - fix: update state values files handling to replace arrays instead of merging by [@​Moglum](https://github.com/Moglum) in [#​2537](helmfile/helmfile#2537) - fix: helmDefaults.postRendererArgs not passed to helm commands by [@​yxxhero](https://github.com/yxxhero) in [#​2510](helmfile/helmfile#2510) - enabledns flags available on template command by [@​Diliz](https://github.com/Diliz) in [#​2511](helmfile/helmfile#2511) - build(deps): bump k8s.io/apimachinery from 0.35.3 to 0.35.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2540](helmfile/helmfile#2540) - build(deps): bump k8s.io/client-go from 0.35.3 to 0.35.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2539](helmfile/helmfile#2539) - build(deps): bump github.com/zclconf/go-cty from 1.18.0 to 1.18.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2542](helmfile/helmfile#2542) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.14 to 1.32.15 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2543](helmfile/helmfile#2543) - fix: eliminate race condition in rewriteChartDependencies by [@​yxxhero](https://github.com/yxxhero) in [#​2541](helmfile/helmfile#2541) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.99.0 to 1.99.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2546](helmfile/helmfile#2546) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.15 to 1.32.16 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2547](helmfile/helmfile#2547) - build(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2553](helmfile/helmfile#2553) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.99.1 to 1.100.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2552](helmfile/helmfile#2552) - Fix helmfile init failing to update outdated helm plugins with Helm v4 by [@​Copilot](https://github.com/Copilot) in [#​2554](helmfile/helmfile#2554) - fix: skip subhelmfiles when selectors conflict with CLI selectors by [@​yxxhero](https://github.com/yxxhero) in [#​2545](helmfile/helmfile#2545) - build(deps): bump gitpython from 3.1.41 to 3.1.47 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2555](helmfile/helmfile#2555) - fix: apply post-renderer to output-dir-template output by [@​yxxhero](https://github.com/yxxhero) in [#​2531](helmfile/helmfile#2531) - build(deps): bump go.uber.org/zap from 1.27.1 to 1.28.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2557](helmfile/helmfile#2557) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.100.0 to 1.100.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2558](helmfile/helmfile#2558) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.16 to 1.32.17 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2559](helmfile/helmfile#2559) - update readme add install from source by [@​Sianao](https://github.com/Sianao) in [#​2561](helmfile/helmfile#2561) - Honor `skipSchemaValidation` during chartification when `forceNamespace` is set by [@​Copilot](https://github.com/Copilot) in [#​2550](helmfile/helmfile#2550) - build(deps): bump github.com/Masterminds/semver/v3 from 3.4.0 to 3.5.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2565](helmfile/helmfile#2565) - fix: deduplicate chart dependencies in helmfile.lock by [@​yxxhero](https://github.com/yxxhero) in [#​2567](helmfile/helmfile#2567) - build(deps): replace werf/kubedog-for-werf-helm with werf/kubedog by [@​yxxhero](https://github.com/yxxhero) in [#​2568](helmfile/helmfile#2568) - build(deps): bump helmfile/vals from v0.43.9 to v0.44.0 by [@​yxxhero](https://github.com/yxxhero) in [#​2569](helmfile/helmfile#2569) - fix: use --post-renderer-args=VALUE format to prevent Helm flag parsing failure by [@​yxxhero](https://github.com/yxxhero) in [#​2570](helmfile/helmfile#2570) #### New Contributors - [@​Moglum](https://github.com/Moglum) made their first contribution in [#​2537](helmfile/helmfile#2537) - [@​Diliz](https://github.com/Diliz) made their first contribution in [#​2511](helmfile/helmfile#2511) - [@​Sianao](https://github.com/Sianao) made their first contribution in [#​2561](helmfile/helmfile#2561) **Full Changelog**: <helmfile/helmfile@v1.4.4...v1.4.5> ### [`v1.4.4`](https://github.com/helmfile/helmfile/releases/tag/v1.4.4) [Compare Source](helmfile/helmfile@v1.4.3...v1.4.4) #### What's Changed - build(deps): bump azure/setup-helm from 4.3.1 to 5.0.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2499](helmfile/helmfile#2499) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.1 to 1.97.2 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2500](helmfile/helmfile#2500) - fix: helmfile fetch fails for kustomization directories by [@​yxxhero](https://github.com/yxxhero) in [#​2504](helmfile/helmfile#2504) - fix: keep all chart dependencies key / values by [@​champtar](https://github.com/champtar) in [#​2501](helmfile/helmfile#2501) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.2 to 1.97.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2505](helmfile/helmfile#2505) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.12 to 1.32.13 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2506](helmfile/helmfile#2506) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.3 to 1.98.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2512](helmfile/helmfile#2512) - build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2513](helmfile/helmfile#2513) - chore: update go version to 1.25.8 by [@​eadred](https://github.com/eadred) in [#​2514](helmfile/helmfile#2514) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.13 to 1.32.14 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2516](helmfile/helmfile#2516) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.98.0 to 1.99.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2517](helmfile/helmfile#2517) - build(deps): bump github.com/helmfile/vals from 0.43.7 to 0.43.8 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2518](helmfile/helmfile#2518) #### New Contributors - [@​champtar](https://github.com/champtar) made their first contribution in [#​2501](helmfile/helmfile#2501) - [@​eadred](https://github.com/eadred) made their first contribution in [#​2514](helmfile/helmfile#2514) **Full Changelog**: <helmfile/helmfile@v1.4.3...v1.4.4> ### [`v1.4.3`](https://github.com/helmfile/helmfile/releases/tag/v1.4.3) [Compare Source](helmfile/helmfile@v1.4.2...v1.4.3) #### What's Changed - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.97.0 to 1.97.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2488](helmfile/helmfile#2488) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.11 to 1.32.12 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2487](helmfile/helmfile#2487) - Fix interactive apply asks in no change situation by [@​tarrow](https://github.com/tarrow) in [#​945](helmfile/helmfile#945) - build(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2490](helmfile/helmfile#2490) - fix: helmfile list now reflects version from helmfile.lock by [@​yxxhero](https://github.com/yxxhero) in [#​2486](helmfile/helmfile#2486) - build(deps): bump k8s.io/client-go from 0.35.2 to 0.35.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2492](helmfile/helmfile#2492) - build(deps): bump github.com/fatih/color from 1.18.0 to 1.19.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2494](helmfile/helmfile#2494) - fix: cleanup hooks not receiving error signal by [@​yxxhero](https://github.com/yxxhero) in [#​2475](helmfile/helmfile#2475) - fix: pass --timeout flag through to helm for sync and apply by [@​hristiy4n](https://github.com/hristiy4n) in [#​2495](helmfile/helmfile#2495) - fix: error on missing secret key when using vals by [@​yxxhero](https://github.com/yxxhero) in [#​2496](helmfile/helmfile#2496) - build: update helm-diff to v3.15.3 by [@​yxxhero](https://github.com/yxxhero) in [#​2498](helmfile/helmfile#2498) - feat: add an arg that passing description to `helm upgrade` command by [@​swimablefish](https://github.com/swimablefish) in [#​2497](helmfile/helmfile#2497) #### New Contributors - [@​tarrow](https://github.com/tarrow) made their first contribution in [#​945](helmfile/helmfile#945) - [@​hristiy4n](https://github.com/hristiy4n) made their first contribution in [#​2495](helmfile/helmfile#2495) - [@​swimablefish](https://github.com/swimablefish) made their first contribution in [#​2497](helmfile/helmfile#2497) **Full Changelog**: <helmfile/helmfile@v1.4.2...v1.4.3> ### [`v1.4.2`](https://github.com/helmfile/helmfile/releases/tag/v1.4.2) [Compare Source](helmfile/helmfile@v1.4.1...v1.4.2) #### What's Changed - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.96.2 to 1.96.3 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2456](helmfile/helmfile#2456) - build(deps): bump docker/login-action from 3 to 4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2454](helmfile/helmfile#2454) - build(deps): bump docker/setup-qemu-action from 3 to 4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2453](helmfile/helmfile#2453) - build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.10 to 1.32.11 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2455](helmfile/helmfile#2455) - Add CHANGELOG.md by [@​PhilipLudington](https://github.com/PhilipLudington) in [#​2457](helmfile/helmfile#2457) - build(deps): bump docker/setup-buildx-action from 3 to 4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2462](helmfile/helmfile#2462) - build(deps): bump markdown from 3.6 to 3.8.1 in /docs by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2463](helmfile/helmfile#2463) - build(deps): bump docker/build-push-action from 6 to 7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2469](helmfile/helmfile#2469) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.96.3 to 1.96.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2470](helmfile/helmfile#2470) - build(deps): bump docker/metadata-action from 5 to 6 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2468](helmfile/helmfile#2468) - feat: add helm-legacy track mode for Helm v4 compatibility by [@​yxxhero](https://github.com/yxxhero) in [#​2466](helmfile/helmfile#2466) - docs: add comprehensive values merging and data flow guide by [@​yxxhero](https://github.com/yxxhero) in [#​2461](helmfile/helmfile#2461) - fix: nested helmfile values should replace arrays, not merge element-by-element by [@​aditmeno](https://github.com/aditmeno) in [#​2458](helmfile/helmfile#2458) - build(deps): bump go.yaml.in/yaml/v2 from 2.4.3 to 2.4.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2473](helmfile/helmfile#2473) - build(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2472](helmfile/helmfile#2472) - fix: use --force-replace flag for Helm 4 instead of deprecated --force by [@​yxxhero](https://github.com/yxxhero) in [#​2477](helmfile/helmfile#2477) - build(deps): bump golang.org/x/term from 0.40.0 to 0.41.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2479](helmfile/helmfile#2479) - build(deps): bump github.com/helmfile/vals from 0.43.6 to 0.43.7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2478](helmfile/helmfile#2478) - build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.96.4 to 1.97.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​2484](helmfile/helmfile#2484) - build(deps): bump Helm from v4.1.1 to v4.1.3 by [@​yxxhero](https://github.com/yxxhero) in [#​2481](helmfile/helmfile#2481) - feat: add --force-conflicts flag support for Helm 4 by [@​yxxhero](https://github.com/yxxhero) in [#​2480](helmfile/helmfile#2480) #### New Contributors - [@​PhilipLudington](https://github.com/PhilipLudington) made their first contribution in [#​2457](helmfile/helmfile#2457) **Full Changelog**: <helmfile/helmfile@v1.4.1...v1.4.2> </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/London) - 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 is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0My4xOTUuMSIsInVwZGF0ZWRJblZlciI6IjQzLjE5NS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL21pbm9yIl19--> Reviewed-on: https://forgejo.hayden.moe/hayden/phoebe/pulls/42
Summary
Fixes #2502
rewriteChartDependenciespreviously modified the originalChart.yamlin-place to rewrite relativefile://dependency paths to absolute paths. When multiple releases referenced the same local chart, concurrent goroutines would race on the shared file, causing corruption (Error: validation: chart.metadata.name is required).Changes
pkg/state/state.go: ChangedrewriteChartDependenciesto copy the chart to a temp directory viast.fs.CopyDirand rewrite the copy'sChart.yamlinstead of the original. The function signature changed from(func(), error)to(string, func(), error)— the returned string is the (possibly new) chart path to use. The per-chart mutex is no longer needed in this function.pkg/state/state.go: UpdatedprocessChartificationcaller to use the returned chart path.pkg/state/chart_dependencies_rewrite_test.go: Updated all tests for the new signature; renamedCleanupRestoresOriginaltoOriginalNotModifiedto verify the original file is never touched.Testing
TestRewriteChartDependencies*tests passTestRewriteChartDependencies_RaceConditionpasses with 10 concurrent goroutines operating on the same chart pathgo vetandgo buildpass cleanly