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

  1. Run `skaffold fix` with a current skaffold release
  2. Simplify unusual fields in the legacy deploy.helm section and retry
  3. 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.