{"record":{"id":"0ce63f4f2290843a","repo":"GoogleContainerTools/skaffold","slug":"unable-to-expand-build-args-w","errorCode":null,"errorMessage":"unable to expand build args: %w","messagePattern":"unable to expand build args: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/docker/build_args.go","lineNumber":86,"sourceCode":"\tabsDockerfilePath, err := NormalizeDockerfilePath(workspace, dockerfilePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"normalizing dockerfile path: %w\", err)\n\t}\n\tf, err := os.Open(absDockerfilePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"reading dockerfile: %w\", err)\n\t}\n\tdefer f.Close()\n\tresult, err = filterUnusedBuildArgs(f, result)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"removing unused default args: %w\", err)\n\t}\n\tfor k, v := range args {\n\t\tresult[k] = v\n\t}\n\tresult, err = util.EvaluateEnvTemplateMapWithEnv(result, env)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to expand build args: %w\", err)\n\t}\n\treturn result, nil\n}\n\n// ArtifactResolver provides an interface to resolve built artifact tags by image name.\ntype ArtifactResolver interface {\n\tGetImageTag(imageName string) (string, bool)\n}\n\n// ResolveDependencyImages creates a map of artifact aliases to their built image from a required artifacts slice.\n// If `missingIsFatal` is false then it is permissive of missing entries in the ArtifactResolver and returns nil for those entries.\nfunc ResolveDependencyImages(deps []*latest.ArtifactDependency, r ArtifactResolver, missingIsFatal bool) map[string]*string {\n\tif r == nil {\n\t\t// `diagnose` is called without an artifact resolver. Return an empty map in this case.\n\t\treturn nil\n\t}\n\tm := make(map[string]*string)\n\tfor _, d := range deps {","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/docker/build_args.go#L68-L104","documentation":"Wraps a failure from util.EvaluateEnvTemplateMapWithEnv when expanding ${...} templates in build args. A referenced environment variable is unset (or a template is malformed), so the final build-arg map cannot be produced.","triggerScenarios":"evalBuildArgs calls EvaluateEnvTemplateMapWithEnv(result, env) and a build arg value like ${USER} or ${VAR:-default} with an unset required variable fails evaluation, or the template syntax is invalid.","commonSituations":"skaffold.yaml build args referencing env vars absent in CI; shell-expanded vars available locally but not in the build environment; typos like ${{VAR}}.","solutions":["Export the missing environment variable before running skaffold","Use a default in the template: ${VAR:-default}","Hard-code the value in skaffold.yaml if it is static","Fix malformed template syntax in the build-arg value"],"exampleFix":"// before\nbuild:\n  buildArgs:\n    USER: \"{{.USER}}\"   # unset in CI\n// after\nbuild:\n  buildArgs:\n    USER: \"${USER:-ci}\"","handlingStrategy":"validation","validationCode":"for k, v := range buildArgs {\n  for _, m := range templateRegexp.FindAllStringSubmatch(v, -1) {\n    name := m[1]\n    if os.Getenv(name) == \"\" && !strings.Contains(v, name+\":-\") {\n      return fmt.Errorf(\"build arg %s references unset env var %s\", k, name)\n    }\n  }\n}","typeGuard":null,"tryCatchPattern":"args, err := evalBuildArgs(workspace, df, args, env)\nif err != nil && strings.Contains(err.Error(), \"unable to expand build args\") {\n  return fmt.Errorf(\"missing env var for build args: %w\", err)\n}","preventionTips":["Provide defaults ${VAR:-default} in templated build args","Document required env vars and set them in CI pipelines","Validate env presence before invoking skaffold","Avoid ${{VAR}} double-brace typos"],"tags":["build-args","env-var","templating","skaffold"],"backgroundTag":"missing-env-var","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"}