{"record":{"id":"6fda33bb223166ea","repo":"GoogleContainerTools/skaffold","slug":"parsing-image-name-for-registry-w","errorCode":null,"errorMessage":"parsing image name for registry: %w","messagePattern":"parsing image name for registry: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/docker/auth.go","lineNumber":234,"sourceCode":"\nfunc parseRepositoryInfo(reposName reference.Named) (string, bool) {\n\tnormalizeIndexName := func(val string) string {\n\t\tif val == \"index.docker.io\" {\n\t\t\treturn \"docker.io\"\n\t\t}\n\t\treturn val\n\t}\n\tval := normalizeIndexName(reference.Domain(reposName))\n\tif val == DockerIndexName {\n\t\treturn DockerIndexName, true\n\t}\n\treturn val, false\n}\n\nfunc (l *localDaemon) encodedRegistryAuth(ctx context.Context, a AuthConfigHelper, image string) (string, error) {\n\tref, err := reference.ParseNormalizedNamed(image)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"parsing image name for registry: %w\", err)\n\t}\n\n\tconfigKey, official := parseRepositoryInfo(ref)\n\tif official {\n\t\tconfigKey = l.officialRegistry(ctx)\n\t}\n\n\tac, err := a.GetAuthConfig(ctx, configKey)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"getting auth config: %w\", err)\n\t}\n\n\treturn encodeAuthConfig(ac)\n}\n\nfunc encodeAuthConfig(authConfig types.AuthConfig) (string, error) {\n\tb, err := json.Marshal(authConfig)\n\tif err != nil {","sourceCodeStart":216,"sourceCodeEnd":252,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/docker/auth.go#L216-L252","documentation":"Wraps a failure of reference.ParseNormalizedNamed when parsing an image name into a normalized registry reference before resolving auth. Any invalid image reference makes encodedRegistryAuth — used by Push and Pull — fail.","triggerScenarios":"localDaemon.Push/Pull (or a callback) calls encodedRegistryAuth with an image string ParseNormalizedNamed rejects: empty string, invalid characters, wrong case (uppercase repo on docker.io), or malformed tag/digest.","commonSituations":"Typo in image name in skaffold.yaml; image name containing uppercase letters for Docker Hub; empty image name after templating; passing a URL with scheme (https://) instead of an image ref.","solutions":["Fix the image name: lowercase repository, valid format [[host]/]repo[:tag][@digest]","Remove any scheme (https://) from the image name","Check templated image names render non-empty values","Validate locally: `docker image inspect <name>` or a reference parser to confirm the ref is valid"],"exampleFix":"// before\nimage: MyImage\n// after\nimage: myimage\n# or fully qualified:\nimage: gcr.io/project/my-image:v1","handlingStrategy":"validation","validationCode":"_, err := reference.ParseNormalizedNamed(imageName)\nif err != nil {\n  return fmt.Errorf(\"invalid image name %q: %w\", imageName, err)\n}","typeGuard":null,"tryCatchPattern":"_, err := daemon.Push(ctx, imageName)\nif err != nil && strings.Contains(err.Error(), \"parsing image name for registry\") {\n  return fmt.Errorf(\"fix image name %q (lowercase, no scheme): %w\", imageName, err)\n}","preventionTips":["Lowercase all repository names","Never include http(s):// in image names","Validate templated image names render to non-empty refs","Check names with `docker tag` before pushing"],"tags":["docker","image-name","parsing","auth"],"backgroundTag":"invalid-image-reference","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"}