Skip to content

fix: eliminate race condition in rewriteChartDependencies#2541

Merged
yxxhero merged 10 commits into
mainfrom
fix/race-condition-rewrite-chart-deps
Apr 20, 2026
Merged

fix: eliminate race condition in rewriteChartDependencies#2541
yxxhero merged 10 commits into
mainfrom
fix/race-condition-rewrite-chart-deps

Conversation

@yxxhero

@yxxhero yxxhero commented Apr 17, 2026

Copy link
Copy Markdown
Member

Summary

Fixes #2502

rewriteChartDependencies previously modified the original Chart.yaml in-place to rewrite relative file:// 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: Changed rewriteChartDependencies to copy the chart to a temp directory via st.fs.CopyDir and rewrite the copy's Chart.yaml instead 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: Updated processChartification caller to use the returned chart path.
  • pkg/state/chart_dependencies_rewrite_test.go: Updated all tests for the new signature; renamed CleanupRestoresOriginal to OriginalNotModified to verify the original file is never touched.

Testing

  • All TestRewriteChartDependencies* tests pass
  • TestRewriteChartDependencies_RaceCondition passes with 10 concurrent goroutines operating on the same chart path
  • go vet and go build pass cleanly

aditmeno
aditmeno previously approved these changes Apr 17, 2026

@aditmeno aditmeno left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 rewriteChartDependencies to copy the chart directory to a temp location and rewrite the copy’s Chart.yaml, returning the (possibly new) chart path plus a cleanup function.
  • Update processChartification to 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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

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)
}

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
}
}
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)
}

Copilot uses AI. Check for mistakes.
@yxxhero yxxhero force-pushed the fix/race-condition-rewrite-chart-deps branch from cf7e913 to e5faf9c Compare April 17, 2026 14:59
@yxxhero yxxhero requested review from aditmeno and Copilot April 17, 2026 15:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment thread pkg/state/state.go Outdated
Comment on lines 1512 to 1517
rewrittenPath, restoreChart, err := st.rewriteChartDependencies(chartPath)
if err != nil {
return "", false, fmt.Errorf("failed to rewrite chart dependencies: %w", err)
}
chartPath = rewrittenPath
defer restoreChart()

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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()

Copilot uses AI. Check for mistakes.
aditmeno
aditmeno previously approved these changes Apr 17, 2026
@yxxhero yxxhero force-pushed the fix/race-condition-rewrite-chart-deps branch from e5faf9c to e0326b9 Compare April 17, 2026 15:20
@yxxhero yxxhero requested a review from Copilot April 17, 2026 15:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

Comment thread pkg/state/state.go Outdated
Comment on lines 1472 to 1490
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)
}

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment thread pkg/state/state.go
Comment on lines +1477 to +1482
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)
}

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +519 to +557
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()

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

Comment thread pkg/state/state.go Outdated
Comment on lines 1469 to 1485
// 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
}

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
// 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.

Copilot uses AI. Check for mistakes.
Comment on lines +265 to +266
defer cleanup()

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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)
}
})

Copilot uses AI. Check for mistakes.
@yxxhero yxxhero force-pushed the fix/race-condition-rewrite-chart-deps branch from 8a28a5f to db3291c Compare April 17, 2026 23:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

…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]>
@yxxhero yxxhero force-pushed the fix/race-condition-rewrite-chart-deps branch from a33138c to 1c88125 Compare April 17, 2026 23:42
- 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]>
@yxxhero yxxhero force-pushed the fix/race-condition-rewrite-chart-deps branch from 1c88125 to 5155ea5 Compare April 17, 2026 23:43
@yxxhero yxxhero requested a review from aditmeno April 17, 2026 23:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Comment thread pkg/filesystem/fs.go
Comment on lines 47 to 54
func DefaultFileSystem() *FileSystem {
dfs := FileSystem{
ReadDir: os.ReadDir,
WriteFile: os.WriteFile,
DeleteFile: os.Remove,
MkdirTemp: os.MkdirTemp,
RemoveAll: os.RemoveAll,
Glob: filepath.Glob,

Copilot AI Apr 18, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Comment on lines +4 to +14
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

Copilot AI Apr 18, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot generated this review using guidance from repository custom instructions.
yxxhero added 2 commits April 18, 2026 14:55
…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]>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.

@yxxhero yxxhero merged commit fc31dbf into main Apr 20, 2026
20 checks passed
@yxxhero yxxhero deleted the fix/race-condition-rewrite-chart-deps branch April 20, 2026 02:15
hbjydev pushed a commit to hbjydev/phoebe that referenced this pull request May 29, 2026
…) (#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 [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2588](helmfile/helmfile#2588)
- bump helm-diff to v3.15.7 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2591](helmfile/helmfile#2591)
- fix: refresh Chart.lock after rewriting file:// dependencies by [@&#8203;sstarcher](https://github.com/sstarcher) in [#&#8203;2587](helmfile/helmfile#2587)
- feat: support HELMFILE\_KUBE\_CONTEXT env var for default kube context by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2593](helmfile/helmfile#2593)
- feat: support HELMFILE\_NAMESPACE env var for default namespace by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2592](helmfile/helmfile#2592)
- fix: normalize dependency chart path before DirectoryExistsAt check by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2598](helmfile/helmfile#2598)
- Add jsonPatches regression coverage for chartify lookup rendering by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2586](helmfile/helmfile#2586)
- feat: add defaultInherit for automatic release template inheritance by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2600](helmfile/helmfile#2600)
- fix: restore kubedog status progress output during tracking by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2602](helmfile/helmfile#2602)
- feat: show diff preview when sync --interactive is used by [@&#8203;vomba](https://github.com/vomba) in [#&#8203;2603](helmfile/helmfile#2603)
- build(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.32 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2607](helmfile/helmfile#2607)
- feat: support HELMFILE\_\* env vars for more global flags by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2606](helmfile/helmfile#2606)

#### New Contributors

- [@&#8203;vomba](https://github.com/vomba) made their first contribution in [#&#8203;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 [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2576](helmfile/helmfile#2576)
- docs: update helmfile skill to reflect v1.1 documentation by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2577](helmfile/helmfile#2577)
- fix(state): resolve OCI repo prefix in ad-hoc release dependencies by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2579](helmfile/helmfile#2579)
- feat(state): add mergeStrategy: fallback for first-file-wins env values by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2578](helmfile/helmfile#2578)
- Expose internal apis by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2581](helmfile/helmfile#2581)
- chore: Deduplicate preparation code of sync and apply by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;2523](helmfile/helmfile#2523)
- build(deps): bump gitpython from 3.1.47 to 3.1.49 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2582](helmfile/helmfile#2582)
- chore: Emit "cleanup" events later to match the behavior in "apply" by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;2522](helmfile/helmfile#2522)
- build(deps): bump golang.org/x/term from 0.42.0 to 0.43.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2584](helmfile/helmfile#2584)
- build(deps): bump gitpython from 3.1.49 to 3.1.50 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2585](helmfile/helmfile#2585)
- fix: template helmDefaults.postRendererArgs with release data by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;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 [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2572](helmfile/helmfile#2572)
- feat: add 'create' subcommand to scaffold helmfile deployment projects by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2574](helmfile/helmfile#2574)
- docs: restructure documentation and improve newcomer experience by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2573](helmfile/helmfile#2573)
- docs: deduplicate Technical Details sections in values-and-merging.md by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2524](helmfile/helmfile#2524)
- chore: rename variables to match in apply and sync by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;2521](helmfile/helmfile#2521)
- chore: bump Helm to v4.1.4 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2525](helmfile/helmfile#2525)
- build(deps): bump golang.org/x/term from 0.41.0 to 0.42.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2529](helmfile/helmfile#2529)
- bump helm v3.20.1 to v3.20.2 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2530](helmfile/helmfile#2530)
- build(deps): bump github.com/helmfile/vals from 0.43.8 to 0.43.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2533](helmfile/helmfile#2533)
- Update Go from 1.25.8 to 1.26.2 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2535](helmfile/helmfile#2535)
- fix: boolean false overrides dropped in multi-document helmfiles ([#&#8203;2527](helmfile/helmfile#2527)) by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2532](helmfile/helmfile#2532)
- build(deps): bump github.com/helmfile/chartify from 0.26.2 to 0.26.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2538](helmfile/helmfile#2538)
- fix: add mutex lock for concurrent rewriteChartDependencies access by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2509](helmfile/helmfile#2509)
- fix: update state values files handling to replace arrays instead of merging by [@&#8203;Moglum](https://github.com/Moglum) in [#&#8203;2537](helmfile/helmfile#2537)
- fix: helmDefaults.postRendererArgs not passed to helm commands by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2510](helmfile/helmfile#2510)
- enabledns flags available on template command by [@&#8203;Diliz](https://github.com/Diliz) in [#&#8203;2511](helmfile/helmfile#2511)
- build(deps): bump k8s.io/apimachinery from 0.35.3 to 0.35.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2540](helmfile/helmfile#2540)
- build(deps): bump k8s.io/client-go from 0.35.3 to 0.35.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2539](helmfile/helmfile#2539)
- build(deps): bump github.com/zclconf/go-cty from 1.18.0 to 1.18.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2542](helmfile/helmfile#2542)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.14 to 1.32.15 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2543](helmfile/helmfile#2543)
- fix: eliminate race condition in rewriteChartDependencies by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2546](helmfile/helmfile#2546)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.15 to 1.32.16 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2547](helmfile/helmfile#2547)
- build(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2552](helmfile/helmfile#2552)
- Fix helmfile init failing to update outdated helm plugins with Helm v4 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2554](helmfile/helmfile#2554)
- fix: skip subhelmfiles when selectors conflict with CLI selectors by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2545](helmfile/helmfile#2545)
- build(deps): bump gitpython from 3.1.41 to 3.1.47 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2555](helmfile/helmfile#2555)
- fix: apply post-renderer to output-dir-template output by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2531](helmfile/helmfile#2531)
- build(deps): bump go.uber.org/zap from 1.27.1 to 1.28.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2558](helmfile/helmfile#2558)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.16 to 1.32.17 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2559](helmfile/helmfile#2559)
- update readme add install from source by [@&#8203;Sianao](https://github.com/Sianao) in [#&#8203;2561](helmfile/helmfile#2561)
- Honor `skipSchemaValidation` during chartification when `forceNamespace` is set by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2550](helmfile/helmfile#2550)
- build(deps): bump github.com/Masterminds/semver/v3 from 3.4.0 to 3.5.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2565](helmfile/helmfile#2565)
- fix: deduplicate chart dependencies in helmfile.lock by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2567](helmfile/helmfile#2567)
- build(deps): replace werf/kubedog-for-werf-helm with werf/kubedog by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2568](helmfile/helmfile#2568)
- build(deps): bump helmfile/vals from v0.43.9 to v0.44.0 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2569](helmfile/helmfile#2569)
- fix: use --post-renderer-args=VALUE format to prevent Helm flag parsing failure by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2570](helmfile/helmfile#2570)

#### New Contributors

- [@&#8203;Moglum](https://github.com/Moglum) made their first contribution in [#&#8203;2537](helmfile/helmfile#2537)
- [@&#8203;Diliz](https://github.com/Diliz) made their first contribution in [#&#8203;2511](helmfile/helmfile#2511)
- [@&#8203;Sianao](https://github.com/Sianao) made their first contribution in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2500](helmfile/helmfile#2500)
- fix: helmfile fetch fails for kustomization directories by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2504](helmfile/helmfile#2504)
- fix: keep all chart dependencies key / values by [@&#8203;champtar](https://github.com/champtar) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2505](helmfile/helmfile#2505)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.12 to 1.32.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2512](helmfile/helmfile#2512)
- build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2513](helmfile/helmfile#2513)
- chore: update go version to 1.25.8 by [@&#8203;eadred](https://github.com/eadred) in [#&#8203;2514](helmfile/helmfile#2514)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.13 to 1.32.14 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2517](helmfile/helmfile#2517)
- build(deps): bump github.com/helmfile/vals from 0.43.7 to 0.43.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2518](helmfile/helmfile#2518)

#### New Contributors

- [@&#8203;champtar](https://github.com/champtar) made their first contribution in [#&#8203;2501](helmfile/helmfile#2501)
- [@&#8203;eadred](https://github.com/eadred) made their first contribution in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2488](helmfile/helmfile#2488)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.11 to 1.32.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2487](helmfile/helmfile#2487)
- Fix interactive apply asks in no change situation by [@&#8203;tarrow](https://github.com/tarrow) in [#&#8203;945](helmfile/helmfile#945)
- build(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2490](helmfile/helmfile#2490)
- fix: helmfile list now reflects version from helmfile.lock by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2486](helmfile/helmfile#2486)
- build(deps): bump k8s.io/client-go from 0.35.2 to 0.35.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2492](helmfile/helmfile#2492)
- build(deps): bump github.com/fatih/color from 1.18.0 to 1.19.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2494](helmfile/helmfile#2494)
- fix: cleanup hooks not receiving error signal by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2475](helmfile/helmfile#2475)
- fix: pass --timeout flag through to helm for sync and apply by [@&#8203;hristiy4n](https://github.com/hristiy4n) in [#&#8203;2495](helmfile/helmfile#2495)
- fix: error on missing secret key when using vals by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2496](helmfile/helmfile#2496)
- build: update helm-diff to v3.15.3 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2498](helmfile/helmfile#2498)
- feat: add an arg that passing description to `helm upgrade` command by [@&#8203;swimablefish](https://github.com/swimablefish) in [#&#8203;2497](helmfile/helmfile#2497)

#### New Contributors

- [@&#8203;tarrow](https://github.com/tarrow) made their first contribution in [#&#8203;945](helmfile/helmfile#945)
- [@&#8203;hristiy4n](https://github.com/hristiy4n) made their first contribution in [#&#8203;2495](helmfile/helmfile#2495)
- [@&#8203;swimablefish](https://github.com/swimablefish) made their first contribution in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2456](helmfile/helmfile#2456)
- build(deps): bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2454](helmfile/helmfile#2454)
- build(deps): bump docker/setup-qemu-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2453](helmfile/helmfile#2453)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.10 to 1.32.11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2455](helmfile/helmfile#2455)
- Add CHANGELOG.md by [@&#8203;PhilipLudington](https://github.com/PhilipLudington) in [#&#8203;2457](helmfile/helmfile#2457)
- build(deps): bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2462](helmfile/helmfile#2462)
- build(deps): bump markdown from 3.6 to 3.8.1 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2463](helmfile/helmfile#2463)
- build(deps): bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2470](helmfile/helmfile#2470)
- build(deps): bump docker/metadata-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2468](helmfile/helmfile#2468)
- feat: add helm-legacy track mode for Helm v4 compatibility by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2466](helmfile/helmfile#2466)
- docs: add comprehensive values merging and data flow guide by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2461](helmfile/helmfile#2461)
- fix: nested helmfile values should replace arrays, not merge element-by-element by [@&#8203;aditmeno](https://github.com/aditmeno) in [#&#8203;2458](helmfile/helmfile#2458)
- build(deps): bump go.yaml.in/yaml/v2 from 2.4.3 to 2.4.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2473](helmfile/helmfile#2473)
- build(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2472](helmfile/helmfile#2472)
- fix: use --force-replace flag for Helm 4 instead of deprecated --force by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2477](helmfile/helmfile#2477)
- build(deps): bump golang.org/x/term from 0.40.0 to 0.41.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2479](helmfile/helmfile#2479)
- build(deps): bump github.com/helmfile/vals from 0.43.6 to 0.43.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2484](helmfile/helmfile#2484)
- build(deps): bump Helm from v4.1.1 to v4.1.3 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2481](helmfile/helmfile#2481)
- feat: add --force-conflicts flag support for Helm 4 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2480](helmfile/helmfile#2480)

#### New Contributors

- [@&#8203;PhilipLudington](https://github.com/PhilipLudington) made their first contribution in [#&#8203;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
hbjydev pushed a commit to hbjydev/phoebe that referenced this pull request Jun 10, 2026
…) (#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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2608](helmfile/helmfile#2608)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.17 to 1.32.18 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2613](helmfile/helmfile#2613)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.18 to 1.32.20 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2614](helmfile/helmfile#2614)
- fix: support array of maps in set/setTemplate values by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2615](helmfile/helmfile#2615)
- fix: remove naked return by returning expected values by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2619](helmfile/helmfile#2619)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.20 to 1.32.21 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2620](helmfile/helmfile#2620)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.21 to 1.32.22 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2622](helmfile/helmfile#2622)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.22 to 1.32.23 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2623](helmfile/helmfile#2623)
- Bump helm-diff to v3.15.8 across runtime defaults and execution environments by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2624](helmfile/helmfile#2624)
- build(deps): bump golang.org/x/sync from 0.20.0 to 0.21.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2588](helmfile/helmfile#2588)
- bump helm-diff to v3.15.7 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2591](helmfile/helmfile#2591)
- fix: refresh Chart.lock after rewriting file:// dependencies by [@&#8203;sstarcher](https://github.com/sstarcher) in [#&#8203;2587](helmfile/helmfile#2587)
- feat: support HELMFILE\_KUBE\_CONTEXT env var for default kube context by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2593](helmfile/helmfile#2593)
- feat: support HELMFILE\_NAMESPACE env var for default namespace by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2592](helmfile/helmfile#2592)
- fix: normalize dependency chart path before DirectoryExistsAt check by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2598](helmfile/helmfile#2598)
- Add jsonPatches regression coverage for chartify lookup rendering by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2586](helmfile/helmfile#2586)
- feat: add defaultInherit for automatic release template inheritance by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2600](helmfile/helmfile#2600)
- fix: restore kubedog status progress output during tracking by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2602](helmfile/helmfile#2602)
- feat: show diff preview when sync --interactive is used by [@&#8203;vomba](https://github.com/vomba) in [#&#8203;2603](helmfile/helmfile#2603)
- build(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.32 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2607](helmfile/helmfile#2607)
- feat: support HELMFILE\_\* env vars for more global flags by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2606](helmfile/helmfile#2606)

#### New Contributors

- [@&#8203;vomba](https://github.com/vomba) made their first contribution in [#&#8203;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 [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2576](helmfile/helmfile#2576)
- docs: update helmfile skill to reflect v1.1 documentation by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2577](helmfile/helmfile#2577)
- fix(state): resolve OCI repo prefix in ad-hoc release dependencies by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2579](helmfile/helmfile#2579)
- feat(state): add mergeStrategy: fallback for first-file-wins env values by [@&#8203;dschmidt](https://github.com/dschmidt) in [#&#8203;2578](helmfile/helmfile#2578)
- Expose internal apis by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2581](helmfile/helmfile#2581)
- chore: Deduplicate preparation code of sync and apply by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;2523](helmfile/helmfile#2523)
- build(deps): bump gitpython from 3.1.47 to 3.1.49 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2582](helmfile/helmfile#2582)
- chore: Emit "cleanup" events later to match the behavior in "apply" by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;2522](helmfile/helmfile#2522)
- build(deps): bump golang.org/x/term from 0.42.0 to 0.43.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2584](helmfile/helmfile#2584)
- build(deps): bump gitpython from 3.1.49 to 3.1.50 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2585](helmfile/helmfile#2585)
- fix: template helmDefaults.postRendererArgs with release data by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;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 [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2572](helmfile/helmfile#2572)
- feat: add 'create' subcommand to scaffold helmfile deployment projects by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2574](helmfile/helmfile#2574)
- docs: restructure documentation and improve newcomer experience by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2573](helmfile/helmfile#2573)
- docs: deduplicate Technical Details sections in values-and-merging.md by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2524](helmfile/helmfile#2524)
- chore: rename variables to match in apply and sync by [@&#8203;ceriath](https://github.com/ceriath) in [#&#8203;2521](helmfile/helmfile#2521)
- chore: bump Helm to v4.1.4 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2525](helmfile/helmfile#2525)
- build(deps): bump golang.org/x/term from 0.41.0 to 0.42.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2529](helmfile/helmfile#2529)
- bump helm v3.20.1 to v3.20.2 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2530](helmfile/helmfile#2530)
- build(deps): bump github.com/helmfile/vals from 0.43.8 to 0.43.9 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2533](helmfile/helmfile#2533)
- Update Go from 1.25.8 to 1.26.2 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2535](helmfile/helmfile#2535)
- fix: boolean false overrides dropped in multi-document helmfiles ([#&#8203;2527](helmfile/helmfile#2527)) by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2532](helmfile/helmfile#2532)
- build(deps): bump github.com/helmfile/chartify from 0.26.2 to 0.26.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2538](helmfile/helmfile#2538)
- fix: add mutex lock for concurrent rewriteChartDependencies access by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2509](helmfile/helmfile#2509)
- fix: update state values files handling to replace arrays instead of merging by [@&#8203;Moglum](https://github.com/Moglum) in [#&#8203;2537](helmfile/helmfile#2537)
- fix: helmDefaults.postRendererArgs not passed to helm commands by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2510](helmfile/helmfile#2510)
- enabledns flags available on template command by [@&#8203;Diliz](https://github.com/Diliz) in [#&#8203;2511](helmfile/helmfile#2511)
- build(deps): bump k8s.io/apimachinery from 0.35.3 to 0.35.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2540](helmfile/helmfile#2540)
- build(deps): bump k8s.io/client-go from 0.35.3 to 0.35.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2539](helmfile/helmfile#2539)
- build(deps): bump github.com/zclconf/go-cty from 1.18.0 to 1.18.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2542](helmfile/helmfile#2542)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.14 to 1.32.15 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2543](helmfile/helmfile#2543)
- fix: eliminate race condition in rewriteChartDependencies by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2546](helmfile/helmfile#2546)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.15 to 1.32.16 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2547](helmfile/helmfile#2547)
- build(deps): bump k8s.io/apimachinery from 0.35.4 to 0.36.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2552](helmfile/helmfile#2552)
- Fix helmfile init failing to update outdated helm plugins with Helm v4 by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2554](helmfile/helmfile#2554)
- fix: skip subhelmfiles when selectors conflict with CLI selectors by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2545](helmfile/helmfile#2545)
- build(deps): bump gitpython from 3.1.41 to 3.1.47 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2555](helmfile/helmfile#2555)
- fix: apply post-renderer to output-dir-template output by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2531](helmfile/helmfile#2531)
- build(deps): bump go.uber.org/zap from 1.27.1 to 1.28.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2558](helmfile/helmfile#2558)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.16 to 1.32.17 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2559](helmfile/helmfile#2559)
- update readme add install from source by [@&#8203;Sianao](https://github.com/Sianao) in [#&#8203;2561](helmfile/helmfile#2561)
- Honor `skipSchemaValidation` during chartification when `forceNamespace` is set by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;2550](helmfile/helmfile#2550)
- build(deps): bump github.com/Masterminds/semver/v3 from 3.4.0 to 3.5.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2565](helmfile/helmfile#2565)
- fix: deduplicate chart dependencies in helmfile.lock by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2567](helmfile/helmfile#2567)
- build(deps): replace werf/kubedog-for-werf-helm with werf/kubedog by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2568](helmfile/helmfile#2568)
- build(deps): bump helmfile/vals from v0.43.9 to v0.44.0 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2569](helmfile/helmfile#2569)
- fix: use --post-renderer-args=VALUE format to prevent Helm flag parsing failure by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2570](helmfile/helmfile#2570)

#### New Contributors

- [@&#8203;Moglum](https://github.com/Moglum) made their first contribution in [#&#8203;2537](helmfile/helmfile#2537)
- [@&#8203;Diliz](https://github.com/Diliz) made their first contribution in [#&#8203;2511](helmfile/helmfile#2511)
- [@&#8203;Sianao](https://github.com/Sianao) made their first contribution in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2500](helmfile/helmfile#2500)
- fix: helmfile fetch fails for kustomization directories by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2504](helmfile/helmfile#2504)
- fix: keep all chart dependencies key / values by [@&#8203;champtar](https://github.com/champtar) in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2505](helmfile/helmfile#2505)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.12 to 1.32.13 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2512](helmfile/helmfile#2512)
- build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2513](helmfile/helmfile#2513)
- chore: update go version to 1.25.8 by [@&#8203;eadred](https://github.com/eadred) in [#&#8203;2514](helmfile/helmfile#2514)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.13 to 1.32.14 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2517](helmfile/helmfile#2517)
- build(deps): bump github.com/helmfile/vals from 0.43.7 to 0.43.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2518](helmfile/helmfile#2518)

#### New Contributors

- [@&#8203;champtar](https://github.com/champtar) made their first contribution in [#&#8203;2501](helmfile/helmfile#2501)
- [@&#8203;eadred](https://github.com/eadred) made their first contribution in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2488](helmfile/helmfile#2488)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.11 to 1.32.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2487](helmfile/helmfile#2487)
- Fix interactive apply asks in no change situation by [@&#8203;tarrow](https://github.com/tarrow) in [#&#8203;945](helmfile/helmfile#945)
- build(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2490](helmfile/helmfile#2490)
- fix: helmfile list now reflects version from helmfile.lock by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2486](helmfile/helmfile#2486)
- build(deps): bump k8s.io/client-go from 0.35.2 to 0.35.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2492](helmfile/helmfile#2492)
- build(deps): bump github.com/fatih/color from 1.18.0 to 1.19.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2494](helmfile/helmfile#2494)
- fix: cleanup hooks not receiving error signal by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2475](helmfile/helmfile#2475)
- fix: pass --timeout flag through to helm for sync and apply by [@&#8203;hristiy4n](https://github.com/hristiy4n) in [#&#8203;2495](helmfile/helmfile#2495)
- fix: error on missing secret key when using vals by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2496](helmfile/helmfile#2496)
- build: update helm-diff to v3.15.3 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2498](helmfile/helmfile#2498)
- feat: add an arg that passing description to `helm upgrade` command by [@&#8203;swimablefish](https://github.com/swimablefish) in [#&#8203;2497](helmfile/helmfile#2497)

#### New Contributors

- [@&#8203;tarrow](https://github.com/tarrow) made their first contribution in [#&#8203;945](helmfile/helmfile#945)
- [@&#8203;hristiy4n](https://github.com/hristiy4n) made their first contribution in [#&#8203;2495](helmfile/helmfile#2495)
- [@&#8203;swimablefish](https://github.com/swimablefish) made their first contribution in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2456](helmfile/helmfile#2456)
- build(deps): bump docker/login-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2454](helmfile/helmfile#2454)
- build(deps): bump docker/setup-qemu-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2453](helmfile/helmfile#2453)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.32.10 to 1.32.11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2455](helmfile/helmfile#2455)
- Add CHANGELOG.md by [@&#8203;PhilipLudington](https://github.com/PhilipLudington) in [#&#8203;2457](helmfile/helmfile#2457)
- build(deps): bump docker/setup-buildx-action from 3 to 4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2462](helmfile/helmfile#2462)
- build(deps): bump markdown from 3.6 to 3.8.1 in /docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2463](helmfile/helmfile#2463)
- build(deps): bump docker/build-push-action from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2470](helmfile/helmfile#2470)
- build(deps): bump docker/metadata-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2468](helmfile/helmfile#2468)
- feat: add helm-legacy track mode for Helm v4 compatibility by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2466](helmfile/helmfile#2466)
- docs: add comprehensive values merging and data flow guide by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2461](helmfile/helmfile#2461)
- fix: nested helmfile values should replace arrays, not merge element-by-element by [@&#8203;aditmeno](https://github.com/aditmeno) in [#&#8203;2458](helmfile/helmfile#2458)
- build(deps): bump go.yaml.in/yaml/v2 from 2.4.3 to 2.4.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2473](helmfile/helmfile#2473)
- build(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2472](helmfile/helmfile#2472)
- fix: use --force-replace flag for Helm 4 instead of deprecated --force by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2477](helmfile/helmfile#2477)
- build(deps): bump golang.org/x/term from 0.40.0 to 0.41.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2479](helmfile/helmfile#2479)
- build(deps): bump github.com/helmfile/vals from 0.43.6 to 0.43.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;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 [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2484](helmfile/helmfile#2484)
- build(deps): bump Helm from v4.1.1 to v4.1.3 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2481](helmfile/helmfile#2481)
- feat: add --force-conflicts flag support for Helm 4 by [@&#8203;yxxhero](https://github.com/yxxhero) in [#&#8203;2480](helmfile/helmfile#2480)

#### New Contributors

- [@&#8203;PhilipLudington](https://github.com/PhilipLudington) made their first contribution in [#&#8203;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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

helmfile race condition when using rewriteChartDependencies

4 participants