{"record":{"id":"092bc8ad0b4ca549","repo":"GoogleContainerTools/skaffold","slug":"cannot-parse-the-release-name-template-w","errorCode":null,"errorMessage":"cannot parse the release name template: %w","messagePattern":"cannot parse the release name template: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/deploy/helm/helm.go","lineNumber":456,"sourceCode":"\t\tif err := walk.From(expandedPath).When(isDep).AppendPaths(&deps); err != nil {\n\t\t\treturn deps, helm.UserErr(\"issue walking releases\", err)\n\t\t}\n\t}\n\tsort.Strings(deps)\n\treturn deps, nil\n}\n\n// Cleanup deletes what was deployed by calling Deploy.\nfunc (h *Deployer) Cleanup(ctx context.Context, out io.Writer, dryRun bool, _ manifest.ManifestListByConfig) error {\n\tinstrumentation.AddAttributesToCurrentSpanFromContext(ctx, map[string]string{\n\t\t\"DeployerType\": \"helm\",\n\t})\n\n\tvar errMsgs []string\n\tfor _, r := range h.Releases {\n\t\treleaseName, err := util.ExpandEnvTemplateOrFail(r.Name, nil)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"cannot parse the release name template: %w\", err)\n\t\t}\n\n\t\tnamespace, err := helm.ReleaseNamespace(h.namespace, r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\targs := []string{}\n\t\tif dryRun {\n\t\t\targs = append(args, \"get\", \"manifest\")\n\t\t} else {\n\t\t\targs = append(args, \"delete\")\n\t\t}\n\t\targs = append(args, releaseName)\n\n\t\tif namespace != \"\" {\n\t\t\targs = append(args, \"--namespace\", namespace)\n\t\t}\n\t\tif err := helm.Exec(ctx, h, out, false, nil, args...); err != nil {","sourceCodeStart":438,"sourceCodeEnd":474,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/deploy/helm/helm.go#L438-L474","documentation":"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.","triggerScenarios":"Calling Cleanup when a release name contains {{.VAR}} for an unset variable, or malformed template syntax like {{.Name (unclosed).","commonSituations":"CI environments missing env vars used in the release name template; typos in template placeholders; shell escaping dropping the variable.","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"],"exampleFix":"// before\nexport ARGS=\"\"\nskaffold delete\n// after\nexport RELEASE_TAG=\"v1.2.3\"   # var used in release name template\nskaffold delete","handlingStrategy":"validation","validationCode":"for _, r := range releases {\n  if _, err := texttemplate.New(\"t\").Parse(r.Name); err != nil {\n    return fmt.Errorf(\"bad release name template %q: %w\", r.Name, err)\n  }\n  for _, m := range varRegex.FindAllStringSubmatch(r.Name, -1) {\n    if os.Getenv(m[1]) == \"\" { return fmt.Errorf(\"env var %s unset\", m[1]) }\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["helm","template","cleanup"],"backgroundTag":"template-env-var-unset","analyzedSha":"a1189de023efc32d4b8e11f395acc678aa555011","analyzedAt":"2026-09-05T12:09:27.064Z","contentChangedAt":"2026-09-05T12:09:27.064Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}