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

  1. Run `skaffold fix` with a current skaffold release
  2. Simplify or sanitize unusual fields in the legacy deploy.helm section, then re-run the fix
  3. 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.