GoogleContainerTools/skaffold · error
cannot parse the release name template: %w
Error message
cannot parse the release name template: %w
What it means
Wraps util.ExpandEnvTemplateOrFail failure when expanding the release `name` template during Cleanup. Release names are Go/env templates; if they reference undefined env variables or have invalid template syntax, Cleanup cannot compute which release to delete.
Source
Thrown at pkg/skaffold/deploy/helm/helm.go:456
if err := walk.From(expandedPath).When(isDep).AppendPaths(&deps); err != nil {
return deps, helm.UserErr("issue walking releases", err)
}
}
sort.Strings(deps)
return deps, nil
}
// Cleanup deletes what was deployed by calling Deploy.
func (h *Deployer) Cleanup(ctx context.Context, out io.Writer, dryRun bool, _ manifest.ManifestListByConfig) error {
instrumentation.AddAttributesToCurrentSpanFromContext(ctx, map[string]string{
"DeployerType": "helm",
})
var errMsgs []string
for _, r := range h.Releases {
releaseName, err := util.ExpandEnvTemplateOrFail(r.Name, nil)
if err != nil {
return fmt.Errorf("cannot parse the release name template: %w", err)
}
namespace, err := helm.ReleaseNamespace(h.namespace, r)
if err != nil {
return err
}
args := []string{}
if dryRun {
args = append(args, "get", "manifest")
} else {
args = append(args, "delete")
}
args = append(args, releaseName)
if namespace != "" {
args = append(args, "--namespace", namespace)
}
if err := helm.Exec(ctx, h, out, false, nil, args...); err != nil {View on GitHub (pinned to a1189de023)
Solutions
- Export the env var referenced by the release name template before running skaffold delete/cleanup
- Fix template syntax in the release name in skaffold.yaml
- Use `skaffold render` or a dry run to see the expanded name and compare with what was deployed
Example fix
// before export ARGS="" skaffold delete // after export RELEASE_TAG="v1.2.3" # var used in release name template skaffold delete
Defensive patterns
Strategy: validation
Validate before calling
for _, r := range releases {
if _, err := texttemplate.New("t").Parse(r.Name); err != nil {
return fmt.Errorf("bad release name template %q: %w", r.Name, err)
}
for _, m := range varRegex.FindAllStringSubmatch(r.Name, -1) {
if os.Getenv(m[1]) == "" { return fmt.Errorf("env var %s unset", m[1]) }
}
} Prevention
- Export every env var used in release name templates before skaffold delete
- Prefer literal release names unless templating is required
- Validate templates with `skaffold render` in dry-run CI
When it happens
Trigger: Calling Cleanup when a release name contains {{.VAR}} for an unset variable, or malformed template syntax like {{.Name (unclosed).
Common situations: CI environments missing env vars used in the release name template; typos in template placeholders; shell escaping dropping the variable.
Related errors
- strings.Join(errMsgs, "\n") (joined helm cleanup error messa
- packaged.version template: %w
- packaged.appVersion template: %w
- collecting helm releases namespaces: %w
- cannot parse the release namespace template: %w
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/092bc8ad0b4ca549.
Report an issue: GitHub.