GoogleContainerTools/skaffold · error
unmarshalling into new helm deploy
Error message
unmarshalling into new helm deploy
What it means
Fires during v2beta29 config upgrade when the JSON-serialized legacy Helm deploy config cannot be unmarshalled into the new LegacyHelmDeploy structure — the old and new schemas don't align for this config, an internal migration failure.
Source
Thrown at pkg/skaffold/schema/v2beta29/upgrade.go:142
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)
if aos != nil && svs == nil {
svs = map[string]string{}
}
if oldPL.Deploy.HelmDeploy.Releases[i].ImageStrategy.HelmConventionConfig != nil {View on GitHub (pinned to a1189de023)
Solutions
- Run `skaffold fix` with a current skaffold release
- Simplify unusual fields in the legacy deploy.helm section and retry
- Report to skaffold maintainers with the failing config if persistent
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/skaffold/schema/v2beta29/upgrade.go:142 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/1681f0d26c836250.
Report an issue: GitHub.