{"record":{"id":"eeae647c65b36242","repo":"GoogleContainerTools/jib","slug":"helpfulsuggestions-none","errorCode":null,"errorMessage":"${helpfulSuggestions.none()}","messagePattern":"\\$\\{helpfulSuggestions\\.none\\(\\)\\}","errorType":"exception","errorClass":"BuildStepsExecutionException","httpStatus":null,"severity":"error","filePath":"jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/JibBuildRunner.java","lineNumber":269,"sourceCode":"    } catch (HttpHostConnectException ex) {\n      // Failed to connect to registry.\n      throw new BuildStepsExecutionException(helpfulSuggestions.forHttpHostConnect(), ex);\n\n    } catch (RegistryUnauthorizedException ex) {\n      handleRegistryUnauthorizedException(ex, helpfulSuggestions);\n\n    } catch (RegistryCredentialsNotSentException ex) {\n      throw new BuildStepsExecutionException(helpfulSuggestions.forCredentialsNotSent(), ex);\n\n    } catch (RegistryAuthenticationFailedException ex) {\n      if (ex.getCause() instanceof ResponseException) {\n        handleRegistryUnauthorizedException(\n            new RegistryUnauthorizedException(\n                ex.getServerUrl(), ex.getImageName(), (ResponseException) ex.getCause()),\n            helpfulSuggestions);\n      } else {\n        // Unknown cause\n        throw new BuildStepsExecutionException(helpfulSuggestions.none(), ex);\n      }\n\n    } catch (UnknownHostException ex) {\n      throw new BuildStepsExecutionException(helpfulSuggestions.forUnknownHost(), ex);\n\n    } catch (InsecureRegistryException ex) {\n      throw new BuildStepsExecutionException(helpfulSuggestions.forInsecureRegistry(), ex);\n\n    } catch (RegistryException ex) {\n      String message = Verify.verifyNotNull(ex.getMessage()); // keep null-away happy\n      throw new BuildStepsExecutionException(message, ex);\n\n    } catch (ExecutionException ex) {\n      String message = ex.getCause().getMessage();\n      throw new BuildStepsExecutionException(\n          message == null ? \"(null exception message)\" : message, ex.getCause());\n\n    } catch (InterruptedException ex) {","sourceCodeStart":251,"sourceCodeEnd":287,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/JibBuildRunner.java#L251-L287","documentation":"When a RegistryAuthenticationFailedException has no ResponseException cause, runBuild treats it as an unknown failure and throws a BuildStepsExecutionException with HelpfulSuggestions.none() — Jib could not authenticate to the registry but the underlying cause is unrecognized, so no targeted suggestion is attached. Inspect the wrapped cause for the real problem.","triggerScenarios":"RegistryAuthenticationFailedException is thrown during runBuild whose getCause() is not a ResponseException — e.g. malformed auth endpoint response, keychain/helper failure, TLS handshake failure during token exchange.","commonSituations":"Misconfigured custom registries with non-standard auth flows; broken Docker config.json; credential helper crashing mid-auth; TLS certificate issues on the token endpoint.","solutions":["Run with -e/--debug (or -Djib.http.trace=true) and inspect the cause chain of the BuildStepsExecutionException.","Verify `docker login <registry>` works — if not, the registry auth endpoint/TLS is at fault.","Check ~/.docker/config.json is valid and points to working credential helpers.","Test TLS: `curl -v https://<registry>/v2/` and fix certificate issues (add CA to truststore if self-signed)."],"exampleFix":"// before (opaque failure)\n./gradlew jib\n// after (see the real cause)\n./gradlew jib --debug -Djib.http.trace=true","handlingStrategy":"try-catch","validationCode":"// preflight: can we authenticate at all?\ndocker login registry.example.com","typeGuard":null,"tryCatchPattern":"try { jibBuild() } catch (BuildStepsExecutionException e) {\n  Throwable cause = e.getCause();\n  if (cause instanceof RegistryAuthenticationFailedException\n      && !(cause.getCause() instanceof ResponseException)) {\n    // unknown auth failure: log full cause chain, check TLS/docker config\n  }\n}","preventionTips":["Enable -Djib.http.trace=true / --debug to capture root causes","Validate ~/.docker/config.json and credential helpers periodically","Verify registry auth endpoint TLS with curl -v","Test with `docker login` to isolate registry-side auth problems"],"tags":["docker","registry","authentication","tls"],"backgroundTag":"registry-authentication-failed","analyzedSha":"fb949e2676afbbd7dd7a1ef61e20251931325654","analyzedAt":"2026-09-06T14:04:09.491Z","contentChangedAt":"2026-09-06T14:04:09.491Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}