fix: add mutex lock for concurrent rewriteChartDependencies access#2509
Conversation
31df9a6 to
11a328b
Compare
There was a problem hiding this comment.
Pull request overview
Adds per-chart locking around rewriteChartDependencies to prevent concurrent goroutines from corrupting Chart.yaml during dependency rewrite + restore, and introduces a concurrency-focused regression test.
Changes:
- Introduce a per-
chartPathmutex map (sync.Map) and lockrewriteChartDependenciesto serialize access per chart. - Restore the original
Chart.yamlcontent under the same lock via the returned cleanup function. - Add
TestRewriteChartDependencies_RaceConditionrunning 10 concurrent goroutines on the same chart directory.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
pkg/state/state.go |
Adds per-chart mutex + locking around rewriteChartDependencies to prevent concurrent modification/restore races. |
pkg/state/chart_dependencies_rewrite_test.go |
Adds a concurrent test intended to detect regressions in rewrite/restore under contention. |
| mu := st.getChartDepsMutex(chartPath) | ||
| mu.Lock() | ||
|
|
||
| // Read Chart.yaml | ||
| data, err := os.ReadFile(chartYamlPath) | ||
| if err != nil { | ||
| mu.Unlock() | ||
| return func() {}, err | ||
| } |
There was a problem hiding this comment.
The mutex is acquired at the start of rewriteChartDependencies, but most later error returns (e.g. yaml.Unmarshal failure, filepath.Abs failure, yaml.Marshal / os.WriteFile failures) return cleanup, err without executing cleanup. Callers like processChartification return immediately on error and do not invoke the returned cleanup, which would leave the per-chart mutex locked forever and deadlock subsequent calls for the same chartPath. Please ensure the mutex is always released on any error path after Lock() (e.g., by invoking cleanup before returning the error and returning a no-op cleanup, or by explicitly Unlock() on error returns).
| // Verify Chart.yaml is still valid | ||
| data, err := os.ReadFile(chartYamlPath) | ||
| if err != nil { | ||
| t.Fatalf("failed to read Chart.yaml: %v", err) | ||
| } | ||
|
|
||
| // Should still have the dependencies section | ||
| if !strings.Contains(string(data), "dependencies:") { | ||
| t.Errorf("Chart.yaml should still have dependencies section") | ||
| } |
There was a problem hiding this comment.
This test says it verifies Chart.yaml "is still valid", but the assertion only checks for the substring "dependencies:", which could still pass with partially corrupted YAML. To actually validate correctness of the concurrent rewrite/restore behavior, consider unmarshaling the file (using the same yaml package as production, github.com/helmfile/helmfile/pkg/yaml) and asserting expected fields/dependencies are present.
|
@copilot review and update code. |
Both issues have been addressed in commit
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (1)
pkg/state/state.go:1519
- When
modifiedis false, the mutex remains locked until the returnedcleanupruns (andcleanuprewrites the file). This serializes concurrent callers on the same chart even though no rewrite was needed. Consider unlocking and returning a no-op cleanup when no changes are made, keeping the long-held lock only for the rewrite+restore case.
// Write back if modified
if modified {
updatedData, err := yaml.Marshal(&chartMeta)
if err != nil {
mu.Unlock()
return func() {}, fmt.Errorf("failed to marshal Chart.yaml: %w", err)
}
if err := os.WriteFile(chartYamlPath, updatedData, 0644); err != nil {
mu.Unlock()
return func() {}, fmt.Errorf("failed to write Chart.yaml: %w", err)
}
st.logger.Debugf("Rewrote Chart.yaml with absolute dependency paths at %s", chartYamlPath)
}
return cleanup, nil
}
| @@ -1417,7 +1417,18 @@ type PrepareChartKey struct { | |||
| // | |||
| // When running `helmfile template` on helm v2, or `helmfile lint` on both helm v2 and v3, | |||
| // PrepareCharts will download and untar charts for linting and templating. | |||
There was a problem hiding this comment.
The PrepareCharts doc comment block now sits immediately above chartDepsMutexMap, so Go will treat it as the doc comment for that variable (and it no longer documents PrepareCharts). Add a blank line (non-comment) to break the association and/or move this mutex map + helper closer to rewriteChartDependencies with its own comment.
| // PrepareCharts will download and untar charts for linting and templating. | |
| // PrepareCharts will download and untar charts for linting and templating. |
| var chartDepsMutexMap sync.Map | ||
|
|
||
| func (st *HelmState) getChartDepsMutex(chartPath string) *sync.Mutex { | ||
| mu, ok := chartDepsMutexMap.Load(chartPath) | ||
| if ok { | ||
| return mu.(*sync.Mutex) | ||
| } | ||
| newMu := &sync.Mutex{} | ||
| actualMu, _ := chartDepsMutexMap.LoadOrStore(chartPath, newMu) | ||
| return actualMu.(*sync.Mutex) |
There was a problem hiding this comment.
This introduces a second global keyed-mutex map (chartDepsMutexMap/getChartDepsMutex) even though the file already has the same pattern with rwMutexMap/getNamedRWMutex (pkg/state/state.go:1391-1404). Consider reusing the existing map (e.g., via getNamedRWMutex + Lock) or generalizing to avoid duplicated keyed-lock infrastructure.
| var chartDepsMutexMap sync.Map | |
| func (st *HelmState) getChartDepsMutex(chartPath string) *sync.Mutex { | |
| mu, ok := chartDepsMutexMap.Load(chartPath) | |
| if ok { | |
| return mu.(*sync.Mutex) | |
| } | |
| newMu := &sync.Mutex{} | |
| actualMu, _ := chartDepsMutexMap.LoadOrStore(chartPath, newMu) | |
| return actualMu.(*sync.Mutex) | |
| func (st *HelmState) getChartDepsMutex(chartPath string) *sync.RWMutex { | |
| return getNamedRWMutex(chartPath) |
|
|
||
| if err := os.WriteFile(chartYamlPath, updatedData, 0644); err != nil { | ||
| return cleanup, fmt.Errorf("failed to write Chart.yaml: %w", err) | ||
| mu.Unlock() | ||
| return func() {}, fmt.Errorf("failed to write Chart.yaml: %w", err) | ||
| } |
There was a problem hiding this comment.
On os.WriteFile(chartYamlPath, updatedData, ...) failure, the file may have been truncated/partially written. The current error path unlocks and returns without attempting to restore originalContent, which can leave a corrupted Chart.yaml behind. Restore the original content under the mutex before returning (or write atomically via temp file + rename).
| // Run multiple goroutines concurrently on the same chart path | ||
| numGoroutines := 10 | ||
| var wg sync.WaitGroup | ||
| errCh := make(chan error, numGoroutines) | ||
|
|
||
| for i := 0; i < numGoroutines; i++ { | ||
| wg.Add(1) | ||
| go func() { | ||
| defer wg.Done() | ||
|
|
||
| logger := zap.NewNop().Sugar() | ||
| st := &HelmState{ | ||
| logger: logger, | ||
| fs: filesystem.DefaultFileSystem(), | ||
| } | ||
|
|
||
| cleanup, err := st.rewriteChartDependencies(tempDir) | ||
| if err != nil { | ||
| errCh <- err | ||
| return | ||
| } | ||
| defer cleanup() | ||
| }() | ||
| } | ||
|
|
||
| wg.Wait() | ||
| close(errCh) |
There was a problem hiding this comment.
This race test starts goroutines immediately, but it doesn’t coordinate a simultaneous start, so it may not reliably create contention on all systems. Consider adding a start barrier (e.g., a channel that all goroutines wait on) so the calls to rewriteChartDependencies overlap deterministically and the test is less flaky/weak.
|
@copilot review comments and update code. |
All four review comments addressed in commit
|
| @@ -1440,6 +1434,7 @@ func (st *HelmState) rewriteChartDependencies(chartPath string) (func(), error) | |||
| if err := os.WriteFile(chartYamlPath, originalContent, 0644); err != nil { | |||
| st.logger.Warnf("Failed to restore original Chart.yaml at %s: %v", chartYamlPath, err) | |||
| } | |||
| mu.Unlock() | |||
| } | |||
There was a problem hiding this comment.
rewriteChartDependencies acquires mu.Lock() unconditionally and the returned cleanup always rewrites Chart.yaml and unlocks later. In the common case where modified is false (no relative file:// deps), callers like processChartification still defer the cleanup, which (a) holds the per-path lock across the entire chartify run and (b) touches Chart.yaml (mtime change + unnecessary IO) even though nothing was changed. Consider unlocking immediately and returning a no-op cleanup when no rewrite is needed, and only restoring/writing the original content (and holding the lock until deferred cleanup) when the file was actually modified.
| // Verify Chart.yaml is still valid by unmarshaling and checking expected fields | ||
| data, err := os.ReadFile(chartYamlPath) | ||
| if err != nil { | ||
| t.Fatalf("failed to read Chart.yaml: %v", err) | ||
| } | ||
|
|
||
| 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 chartMeta ChartMeta | ||
| if err := yaml.Unmarshal(data, &chartMeta); err != nil { | ||
| t.Fatalf("Chart.yaml is not valid YAML after concurrent rewrites: %v", err) | ||
| } | ||
|
|
||
| if chartMeta.Name != "test-chart" { | ||
| t.Errorf("expected chart name 'test-chart', got %q", chartMeta.Name) | ||
| } | ||
| if len(chartMeta.Dependencies) != 1 { | ||
| t.Fatalf("expected 1 dependency, got %d", len(chartMeta.Dependencies)) | ||
| } | ||
| if chartMeta.Dependencies[0].Name != "dep1" { | ||
| t.Errorf("expected dependency name 'dep1', got %q", chartMeta.Dependencies[0].Name) | ||
| } | ||
| if !strings.HasPrefix(chartMeta.Dependencies[0].Repository, "file://") { | ||
| t.Errorf("expected dependency repository to start with 'file://', got %q", chartMeta.Dependencies[0].Repository) | ||
| } |
There was a problem hiding this comment.
This race-condition test only checks that Chart.yaml remains valid YAML and that the dependency repository starts with file://. It will still pass if the file is left in the rewritten (absolute) state or otherwise not restored correctly, since both states are valid YAML and match the prefix check. To validate the intended atomic rewrite+restore behavior, assert the final file contents (or at least the dependency repository) matches the original file://../relative-chart after all goroutines complete (and ideally increase iterations/contention to make regressions more likely to surface).
|
@copilot fix comments |
Both reviewer comments addressed in commit
|
| if err != nil { | ||
| return cleanup, fmt.Errorf("failed to marshal Chart.yaml: %w", err) | ||
| } | ||
| // If nothing changed, release the lock immediately – no file I/O or lock held by caller needed. |
There was a problem hiding this comment.
The comment says "no file I/O" on the no-op path, but Chart.yaml has already been read (and unmarshaled) before this check. Consider rewording to clarify that no write occurs (and the mutex isn’t held beyond the function) when nothing is modified.
| // If nothing changed, release the lock immediately – no file I/O or lock held by caller needed. | |
| // If nothing changed, release the lock immediately. Chart.yaml has already been read and unmarshaled, | |
| // but no file write is needed and the lock is not held beyond this function. |
| // Run multiple goroutines concurrently on the same chart path. | ||
| // A start barrier ensures all goroutines attempt rewriteChartDependencies simultaneously. | ||
| numGoroutines := 10 | ||
| var wg sync.WaitGroup | ||
| errCh := make(chan error, numGoroutines) | ||
| ready := make(chan struct{}) | ||
|
|
There was a problem hiding this comment.
The "start barrier" here doesn’t actually ensure all goroutines are waiting before they’re released (closing ready happens without waiting for every goroutine to reach <-ready>). This reduces contention and can make the race test less effective. Consider adding a readiness counter (e.g., an additional WaitGroup/channel) before closing ready, and/or structuring the test to keep the rewritten state around long enough to force overlap in the pre-fix implementation (or assert that concurrent calls block until cleanup runs).
|
@copilot fix ci issue. |
Addressed in commit
|
Prevent race conditions when multiple goroutines concurrently access the same Chart.yaml by introducing a per-chart-path mutex via sync.Map. Signed-off-by: yxxhero <[email protected]> Signed-off-by: yxxhero <[email protected]>
…failure, add test barrier Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/f93746bf-82fa-46b1-b8f0-b34bc9aa749c Co-authored-by: yxxhero <[email protected]>
4a3302d to
a1c90de
Compare
| // Reuse the existing per-path RWMutex for exclusive access to the chart directory. | ||
| mu := st.getNamedRWMutex(chartPath) | ||
| mu.Lock() | ||
|
|
There was a problem hiding this comment.
The mutex key uses the raw chartPath string, but the file path operated on is filepath.Join(chartPath, "Chart.yaml") (which is cleaned). Equivalent paths like "/tmp/chart" vs "/tmp/chart/" (or paths containing "."/"..") can map to the same Chart.yaml while using different mutex keys, allowing concurrent rewrites despite the lock. Consider normalizing the key (e.g., filepath.Clean and/or filepath.Abs/EvalSymlinks) before calling getNamedRWMutex.
| cleanup, err := st.rewriteChartDependencies(tempDir) | ||
| if err != nil { | ||
| errCh <- err | ||
| return | ||
| } | ||
| defer cleanup() | ||
| }() |
There was a problem hiding this comment.
This race test defers cleanup() immediately after rewriteChartDependencies returns, so without any work between rewrite and cleanup the window for overlap is extremely small. That can make the test flaky/ineffective at reproducing the original corruption (which typically happens when the rewritten Chart.yaml is kept in place while other goroutines enter). Consider adding a small delay or some simulated chart processing between acquiring the cleanup and calling it (or looping the rewrite/cleanup a few times) to make concurrent overlap deterministic.
|
@yxxhero the right fix IMO would be to copy the Chart, here you can still corrupt the local Chart if helmfile exit / the system crash before we restore the original. |
|
@champtar PR is welcome. |
…) (#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
sync.Map) to prevent race conditions when multiple goroutines concurrently callrewriteChartDependencieson the same chart pathChart.yamlcontent under the mutex lock to ensure atomicityTestRewriteChartDependencies_RaceCondition) that runs 10 concurrent goroutinesWhy
rewriteChartDependenciesmodifiesChart.yaml(rewrite relativefile://deps to absolute paths) and later restores it via a cleanup function. When multiple goroutines operate on the same chart path concurrently, this can cause data races and corrupted file content.Testing
TestRewriteChartDependencies_RaceCondition: 10 goroutines concurrently rewrite the same chart, verifying no errors andChart.yamlremains validSigned-off-by: yxxhero [email protected]