feat: add helm 4 --server-side flag support for diff and bump helm-diff to v3.15.10 (#2645)

Add appendServerSideFlagsForDiff to validate helm-diff plugin version
(v3.15.10+) before passing the --server-side flag to helm diff upgrade.
Extract resolveServerSideValue helper to share precedence logic between
upgrade and diff paths. Bump helm-diff recommended version to v3.15.10
across Dockerfiles, CI, and integration scripts.

Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
yxxhero
2026-06-17 09:07:44 +08:00
committed by GitHub
parent 6191f821eb
commit bbceb05b31
8 changed files with 50 additions and 21 deletions
+22 -1
View File
@@ -4019,7 +4019,7 @@ func (st *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSpec,
}
// append server-side flag
flags, err = st.appendServerSideFlagsForUpgrade(flags, helm, release, serverSide)
flags, err = st.appendServerSideFlagsForDiff(flags, helm, release, serverSide, pluginsDir)
if err != nil {
return nil, nil, err
}
@@ -4058,6 +4058,27 @@ func (st *HelmState) appendTakeOwnershipFlagsForDiff(flags []string, release *Re
return flags, nil
}
// appendServerSideFlagsForDiff appends the helm 4 --server-side flag for helm-diff.
// It requires helm-diff plugin version v3.15.10 or later.
func (st *HelmState) appendServerSideFlagsForDiff(flags []string, helm helmexec.Interface, release *ReleaseSpec, serverSide string, pluginsDir string) ([]string, error) {
if helm.IsHelm4() {
value := st.resolveServerSideValue(release, serverSide)
if value != "" {
diffVersion, err := helmexec.GetPluginVersion("diff", pluginsDir)
if err != nil {
return flags, err
}
minVersion, _ := semver.NewVersion("v3.15.10")
if diffVersion.LessThan(minVersion) {
return flags, fmt.Errorf("server-side is not supported by helm-diff plugin version %s, please use at least v3.15.10", diffVersion)
}
}
}
return st.appendServerSideFlagsForUpgrade(flags, helm, release, serverSide)
}
func (st *HelmState) appendChartVersionFlags(flags []string, release *ReleaseSpec) []string {
version := release.Version
// Strip OCI digest from version (digest is handled in chart URL, not --version flag)