From 2475087885ab13453d96393b2d243ca458e246ed Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2026 14:46:43 -0400 Subject: [PATCH] fix: process helm deps before --add-images discovery (backport #703) (#704) Co-authored-by: aeltai --- cmd/hauler/cli/store/add.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/cmd/hauler/cli/store/add.go b/cmd/hauler/cli/store/add.go index b2867b7..0e7a9c8 100644 --- a/cmd/hauler/cli/store/add.go +++ b/cmd/hauler/cli/store/add.go @@ -513,7 +513,21 @@ func storeChart(ctx context.Context, s *store.Layout, cfg v1.Chart, opts *flags. } } - values, err := commonutil.ToRenderValues(c, userValues, common.ReleaseOptions{Namespace: "hauler"}, caps) + // Reload a fresh chart for rendering so ProcessDependencies can safely + // rename aliased deps / drop disabled ones without mutating the chart + // used later by --add-dependencies. + renderChart, err := loader.Load(chrt.Path()) + if err != nil { + return fmt.Errorf("failed to reload chart for image discovery: %w", err) + } + + // Match helm install/template: coalesce parent values into subcharts + // (including dependency aliases) and honor conditions before rendering. + if err := util.ProcessDependencies(renderChart, userValues); err != nil { + return fmt.Errorf("failed to process chart dependencies for image discovery: %w", err) + } + + values, err := commonutil.ToRenderValues(renderChart, userValues, common.ReleaseOptions{Namespace: "hauler"}, caps) if err != nil { return err } @@ -538,7 +552,7 @@ func storeChart(ctx context.Context, s *store.Layout, cfg v1.Chart, opts *flags. ) // parse helm chart templates and values for images - rendered, err := engine.Render(c, values) + rendered, err := engine.Render(renderChart, values) if err != nil { // charts may fail due to values so still try helm chart annotations and lock l.Warnf("%sfailed to render chart [%s]: %v", prefix, c.Name(), err) @@ -624,7 +638,10 @@ func storeChart(ctx context.Context, s *store.Layout, cfg v1.Chart, opts *flags. depOpts := *opts depOpts.AddDependencies = true - depOpts.AddImages = true + // Do not rediscover images on dependency charts in isolation. + // Parent --add-images already renders the full tree (with alias + // overrides and conditions) after ProcessDependencies. + depOpts.AddImages = false subCtx := context.WithValue(ctx, isSubchartKey{}, true) var depCfg v1.Chart