From 3db78851b43b21975bd7f8540a4889d4a907c88e Mon Sep 17 00:00:00 2001 From: Artem <19182088+art-shutter@users.noreply.github.com> Date: Mon, 20 Jan 2025 13:05:21 +0100 Subject: [PATCH] feat: add buildDependenciesSkipRefresh option to HelmRelease for skipping refresh of built dependencies --- docs-v2/content/en/schemas/v4beta12.json | 7 +++++++ pkg/skaffold/render/renderer/helm/helm.go | 6 +++++- pkg/skaffold/schema/latest/config.go | 6 ++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs-v2/content/en/schemas/v4beta12.json b/docs-v2/content/en/schemas/v4beta12.json index 24cd4c39e4d..ac871247196 100755 --- a/docs-v2/content/en/schemas/v4beta12.json +++ b/docs-v2/content/en/schemas/v4beta12.json @@ -2365,6 +2365,12 @@ "name" ], "properties": { + "buildDependenciesSkipRefresh": { + "type": "boolean", + "description": "should the refresh of already built dependencies be skipped. Ignored when `skipBuildDependencies` is `false`.", + "x-intellij-html-description": "should the refresh of already built dependencies be skipped. Ignored when skipBuildDependencies is false.", + "default": "false" + }, "chartPath": { "type": "string", "description": "local path to a packaged Helm chart or an unpacked Helm chart directory.", @@ -2494,6 +2500,7 @@ "wait", "recreatePods", "skipBuildDependencies", + "buildDependenciesSkipRefresh", "skipTests", "useHelmSecrets", "repo", diff --git a/pkg/skaffold/render/renderer/helm/helm.go b/pkg/skaffold/render/renderer/helm/helm.go index b442214e5a6..7e04cdd0ad0 100644 --- a/pkg/skaffold/render/renderer/helm/helm.go +++ b/pkg/skaffold/render/renderer/helm/helm.go @@ -208,7 +208,11 @@ func (h Helm) generateHelmManifest(ctx context.Context, builds []graph.Artifact, // Build Chart dependencies, but allow a user to skip it. if !release.SkipBuildDependencies && release.ChartPath != "" { log.Entry(ctx).Info("Building helm dependencies...") - if err := helm.ExecWithStdoutAndStderr(ctx, h, io.Discard, errBuffer, false, env, "dep", "build", release.ChartPath); err != nil { + cmdArgs := []string{"dep", "build", release.ChartPath} + if release.BuildDependenciesSkipRefresh { + cmdArgs = []string{"dep", "build", "--skip-refresh", release.ChartPath} + } + if err := helm.ExecWithStdoutAndStderr(ctx, h, io.Discard, errBuffer, false, env, cmdArgs...); err != nil { log.Entry(ctx).Info(errBuffer.String()) return nil, helm.UserErr("building helm dependencies", err) } diff --git a/pkg/skaffold/schema/latest/config.go b/pkg/skaffold/schema/latest/config.go index 90865a21b04..1ba9d05e094 100644 --- a/pkg/skaffold/schema/latest/config.go +++ b/pkg/skaffold/schema/latest/config.go @@ -1050,6 +1050,10 @@ type HelmRelease struct { // Ignored for `remoteChart`. SkipBuildDependencies bool `yaml:"skipBuildDependencies,omitempty"` + // BuildDependenciesSkipRefresh should the refresh of already built dependencies be skipped. + // Ignored when `skipBuildDependencies` is `false`. + BuildDependenciesSkipRefresh bool `yaml:"buildDependenciesSkipRefresh,omitempty"` + // SkipTests should ignore helm test during manifests generation. // Defaults to `false` SkipTests bool `yaml:"skipTests,omitempty"` @@ -1856,7 +1860,6 @@ func (clusterDetails *ClusterDetails) UnmarshalYAML(value *yaml.Node) error { // Unmarshal the remaining values aux := (*ClusterDetailsForUnmarshaling)(clusterDetails) err = yaml.Unmarshal(remaining, aux) - if err != nil { return err } @@ -1883,7 +1886,6 @@ func (ka *KanikoArtifact) UnmarshalYAML(value *yaml.Node) error { // Unmarshal the remaining values aux := (*KanikoArtifactForUnmarshaling)(ka) err = yaml.Unmarshal(remaining, aux) - if err != nil { return err }