diff --git a/pkg/app/app.go b/pkg/app/app.go index 7cbee422..94853fbb 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -166,6 +166,7 @@ func (a *App) Diff(c DiffConfigProvider) error { SkipRepos: c.SkipRefresh() || c.SkipDeps(), SkipRefresh: c.SkipRefresh(), SkipDeps: c.SkipDeps(), + SkipSchemaValidation: c.SkipSchemaValidation(), IncludeCRDs: &includeCRDs, Validate: c.Validate(), Concurrency: c.Concurrency(), @@ -237,6 +238,7 @@ func (a *App) Template(c TemplateConfigProvider) error { SkipRepos: c.SkipRefresh() || c.SkipDeps(), SkipRefresh: c.SkipRefresh(), SkipDeps: c.SkipDeps(), + SkipSchemaValidation: c.SkipSchemaValidation(), IncludeCRDs: &includeCRDs, SkipCleanup: c.SkipCleanup(), Validate: c.Validate(), @@ -420,6 +422,7 @@ func (a *App) Sync(c SyncConfigProvider) error { SkipRepos: c.SkipRefresh() || c.SkipDeps(), SkipRefresh: c.SkipRefresh(), SkipDeps: c.SkipDeps(), + SkipSchemaValidation: c.SkipSchemaValidation(), Wait: c.Wait(), WaitRetries: c.WaitRetries(), WaitForJobs: c.WaitForJobs(), @@ -456,6 +459,7 @@ func (a *App) Apply(c ApplyConfigProvider) error { SkipRepos: c.SkipRefresh() || c.SkipDeps(), SkipRefresh: c.SkipRefresh(), SkipDeps: c.SkipDeps(), + SkipSchemaValidation: c.SkipSchemaValidation(), Wait: c.Wait(), WaitRetries: c.WaitRetries(), WaitForJobs: c.WaitForJobs(), diff --git a/pkg/state/issue_2549_test.go b/pkg/state/issue_2549_test.go index 0c90da06..3dd6e343 100644 --- a/pkg/state/issue_2549_test.go +++ b/pkg/state/issue_2549_test.go @@ -13,6 +13,7 @@ func TestAppendSkipSchemaValidationFlagToChartifyTemplateArgs(t *testing.T) { name string defaults HelmSpec release *ReleaseSpec + fromCLI bool templateArgs string want string }{ @@ -55,6 +56,13 @@ func TestAppendSkipSchemaValidationFlagToChartifyTemplateArgs(t *testing.T) { templateArgs: "--set name=foo--skip-schema-validation", want: "--set name=foo--skip-schema-validation --skip-schema-validation", }, + { + name: "adds flag from cli setting", + release: &ReleaseSpec{}, + fromCLI: true, + templateArgs: "--kube-context default", + want: "--kube-context default --skip-schema-validation", + }, { name: "does not add flag when disabled", release: &ReleaseSpec{}, @@ -71,7 +79,7 @@ func TestAppendSkipSchemaValidationFlagToChartifyTemplateArgs(t *testing.T) { }, } - got := st.appendSkipSchemaValidationFlagToChartifyTemplateArgs(tt.templateArgs, tt.release) + got := st.appendSkipSchemaValidationFlagToChartifyTemplateArgs(tt.templateArgs, tt.release, tt.fromCLI) require.Equal(t, tt.want, got) }) } diff --git a/pkg/state/state.go b/pkg/state/state.go index 36e111da..594680e5 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -1341,6 +1341,8 @@ type ChartPrepareOptions struct { SkipRefresh bool SkipResolve bool SkipCleanup bool + // SkipSchemaValidation configures chartify to pass --skip-schema-validation to helm-template run by it. + SkipSchemaValidation bool // Validate configures chartify to pass --validate to helm-template run by it. // It's required when one of your chart relies on Capabilities.APIVersions in a template Validate bool @@ -1622,7 +1624,11 @@ func (st *HelmState) processChartification(chartification *Chartify, release *Re } } - chartifyOpts.TemplateArgs = st.appendSkipSchemaValidationFlagToChartifyTemplateArgs(chartifyOpts.TemplateArgs, release) + chartifyOpts.TemplateArgs = st.appendSkipSchemaValidationFlagToChartifyTemplateArgs( + chartifyOpts.TemplateArgs, + release, + opts.SkipSchemaValidation, + ) out, err := c.Chartify(release.Name, chartPath, chartify.WithChartifyOpts(chartifyOpts)) if err != nil { @@ -1636,8 +1642,8 @@ func (st *HelmState) processChartification(chartification *Chartify, release *Re return chartPath, buildDeps, nil } -func (st *HelmState) appendSkipSchemaValidationFlagToChartifyTemplateArgs(templateArgs string, release *ReleaseSpec) string { - if !st.shouldSkipSchemaValidation(release, false) || hasTemplateArg(templateArgs, "--skip-schema-validation") { +func (st *HelmState) appendSkipSchemaValidationFlagToChartifyTemplateArgs(templateArgs string, release *ReleaseSpec, skipSchemaValidation bool) string { + if !st.shouldSkipSchemaValidation(release, skipSchemaValidation) || hasTemplateArg(templateArgs, "--skip-schema-validation") { return templateArgs }