GoogleContainerTools/skaffold · error
marshalling old helm deploy
Error message
marshalling old helm deploy
What it means
Fires during v2beta29 config upgrade when the old pipeline's Helm deploy configuration cannot be serialized to JSON before being re-shaped into the new pipeline schema. An internal conversion failure on the legacy helm deploy struct.
Source
Thrown at pkg/skaffold/schema/v2beta29/upgrade.go:138
newPL.Render.Kustomize.Paths = append(newPL.Render.Kustomize.Paths, ".")
}
// Inject Kubectl deployer to deploy kustomize manifests
if err := mergeKustomizeIntoKubectlDeployer(newPL, oldPL); err != nil {
return err
}
}
// Copy Kpt deploy config to render config
if oldPL.Deploy.KptDeploy != nil {
return errors.New("converting deploy.kpt isn't currently supported")
}
// Copy helm deploy config
if oldPL.Deploy.HelmDeploy != nil {
oldHelm, err := json.Marshal(*oldPL.Deploy.HelmDeploy)
if err != nil {
return errors.Wrap(err, "marshalling old helm deploy")
}
newHelm := next.LegacyHelmDeploy{}
if err = json.Unmarshal(oldHelm, &newHelm); err != nil {
return errors.Wrap(err, "unmarshalling into new helm deploy")
}
// Copy Releases and Flags into the render config. Hooks are not copied due to v1
// backwards compatibility: v1 skaffold render command doesn't trigger the hooks.
newPL.Render.Helm = &next.Helm{}
newPL.Render.Helm.Releases = newHelm.Releases
newPL.Render.Helm.Flags = newHelm.Flags
// Copy over removed artifactOverrides & imageStrategy field as identical setValues fields
for i := 0; i < len(newPL.Render.Helm.Releases); i++ {
// need to append, not override
svs := map[string]string(oldPL.Deploy.HelmDeploy.Releases[i].SetValues)
svts := map[string]string(oldPL.Deploy.HelmDeploy.Releases[i].SetValueTemplates)
aos := map[string]string(oldPL.Deploy.HelmDeploy.Releases[i].ArtifactOverrides)View on GitHub (pinned to a1189de023)
Solutions
- Run `skaffold fix` with a current skaffold release
- Simplify or sanitize unusual fields in the legacy deploy.helm section, then re-run the fix
- If persistent, report the (redacted) helm deploy config to skaffold maintainers
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/skaffold/schema/v2beta29/upgrade.go:138 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/0cbbe8f1edd7919e.
Report an issue: GitHub.