feat: skip chart prep for local (#1681)
* skip chart prep for local Signed-off-by: zhaque44 <haque.zubair@gmail.com> * rm whitespace Signed-off-by: zhaque44 <haque.zubair@gmail.com> * update based on linting comments Signed-off-by: zhaque44 <haque.zubair@gmail.com> * use func Signed-off-by: zhaque44 <haque.zubair@gmail.com> * update slices & handle concurrency Signed-off-by: zhaque44 <haque.zubair@gmail.com> * rm misc comment Signed-off-by: zhaque44 <haque.zubair@gmail.com> * default to 1 value Signed-off-by: zhaque44 <haque.zubair@gmail.com> * rm concurrency handling Signed-off-by: zhaque44 <haque.zubair@gmail.com> --------- Signed-off-by: zhaque44 <haque.zubair@gmail.com>
This commit is contained in:
parent
2cc995e508
commit
04a258dc15
|
|
@ -3,6 +3,7 @@ package app
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"slices"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
|
@ -39,6 +40,21 @@ func (r *Run) askForConfirmation(msg string) bool {
|
||||||
return AskForConfirmation(msg)
|
return AskForConfirmation(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Run) prepareChartsIfNeeded(helmfileCommand string, dir string, concurrency int, opts state.ChartPrepareOptions) (map[state.PrepareChartKey]string, error) {
|
||||||
|
// Skip chart preparation for certain commands
|
||||||
|
skipCommands := []string{"write-values", "list"}
|
||||||
|
if slices.Contains(skipCommands, strings.ToLower(helmfileCommand)) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
releaseToChart, errs := r.state.PrepareCharts(r.helm, dir, concurrency, helmfileCommand, opts)
|
||||||
|
if len(errs) > 0 {
|
||||||
|
return nil, fmt.Errorf("%v", errs)
|
||||||
|
}
|
||||||
|
|
||||||
|
return releaseToChart, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func()) error {
|
func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func()) error {
|
||||||
if r.ReleaseToChart != nil {
|
if r.ReleaseToChart != nil {
|
||||||
panic("Run.PrepareCharts can be called only once")
|
panic("Run.PrepareCharts can be called only once")
|
||||||
|
|
@ -71,12 +87,9 @@ func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepare
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
concurrency := opts.Concurrency
|
releaseToChart, err := r.prepareChartsIfNeeded(helmfileCommand, dir, opts.Concurrency, opts)
|
||||||
|
if err != nil {
|
||||||
releaseToChart, errs := r.state.PrepareCharts(r.helm, dir, concurrency, helmfileCommand, opts)
|
return err
|
||||||
|
|
||||||
if len(errs) > 0 {
|
|
||||||
return fmt.Errorf("%v", errs)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := range r.state.Releases {
|
for i := range r.state.Releases {
|
||||||
|
|
@ -87,9 +100,6 @@ func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepare
|
||||||
KubeContext: rel.KubeContext,
|
KubeContext: rel.KubeContext,
|
||||||
}
|
}
|
||||||
if chart := releaseToChart[key]; chart != rel.Chart {
|
if chart := releaseToChart[key]; chart != rel.Chart {
|
||||||
// In this case we assume that the chart is downloaded and modified by Helmfile and chartify.
|
|
||||||
// So we take note of the local filesystem path to the modified version of the chart
|
|
||||||
// and use it later via the Release.ChartPathOrName() func.
|
|
||||||
rel.ChartPath = chart
|
rel.ChartPath = chart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -98,8 +108,7 @@ func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepare
|
||||||
|
|
||||||
f()
|
f()
|
||||||
|
|
||||||
_, err := r.state.TriggerGlobalCleanupEvent(helmfileCommand)
|
_, err = r.state.TriggerGlobalCleanupEvent(helmfileCommand)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue