{"record":{"id":"0594104db0f5d861","repo":"GoogleContainerTools/skaffold","slug":"failed-to-download-manifest-from-s-err-w","errorCode":null,"errorMessage":"failed to download manifest from %s, err : %w","messagePattern":"failed to download manifest from (.+?), err : %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/kubernetes/manifest/url.go","lineNumber":57,"sourceCode":"\tfor _, manifest := range manifests {\n\t\tout, err := downloadFromURL(dir, manifest)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpaths = append(paths, out)\n\t}\n\treturn paths, nil\n}\n\nfunc downloadFromURL(destDir string, manifest string) (string, error) {\n\tif manifest == \"\" || !util.IsURL(manifest) {\n\t\treturn \"\", fmt.Errorf(\"%s is not a valid URL\", manifest)\n\t}\n\n\tresp, err := http.Get(manifest)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to download manifest from %s, err : %w\", manifest, err)\n\t}\n\tdefer resp.Body.Close()\n\n\tf, err := os.CreateTemp(destDir, \"*.yaml\")\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to create manifest file: %w\", err)\n\t}\n\tdefer f.Close()\n\t_, err = io.Copy(f, resp.Body)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to write manifest to file, err: %w\", err)\n\t}\n\n\treturn f.Name(), nil\n}\n","sourceCodeStart":39,"sourceCodeEnd":73,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/kubernetes/manifest/url.go#L39-L73","documentation":"After URL validation, downloadFromURL performs http.Get(manifest). Any transport-level failure (DNS failure, connection refused/reset, TLS error, timeout) is wrapped as 'failed to download manifest from %s, err : %w'.","triggerScenarios":"http.Get returning a non-nil error when downloading a remote manifest: unreachable host, no network, invalid TLS certificates, proxy issues, or a URL scheme http.Get cannot handle.","commonSituations":"Corporate proxy/firewall blocking the host; offline CI; self-signed certificates; DNS misconfiguration; VPN not connected.","solutions":["Verify network reachability: curl the exact URL from the same machine/container","Configure proxy env vars (HTTP_PROXY/HTTPS_PROXY) or add the CA cert to the trust store for TLS errors","Fix DNS/hosts entries or reconnect VPN, then re-run"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"u, err := url.Parse(manifest)\nif err == nil {\n    addr := u.Hostname()\n    if _, err := net.LookupHost(addr); err != nil {\n        return fmt.Errorf(\"host %q not resolvable\", addr)\n    }\n}","typeGuard":null,"tryCatchPattern":"if err != nil {\n    var netErr net.Error\n    if errors.As(err, &netErr) && netErr.Timeout() {\n        // backoff and retry download\n    }\n    return fmt.Errorf(\"download failed: %w\", err)\n}","preventionTips":["Test the URL with curl from the same environment first","Configure HTTP(S)_PROXY and CA certificates in CI containers","Prefer vendoring manifests in-repo for deterministic builds"],"tags":["network","http","download","manifests"],"backgroundTag":"http-request-failed","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"}