GoogleContainerTools/jib · error · BuildStepsExecutionException

${ex.getMessage()}

Error message

${ex.getMessage()}

What it means

BuildStepsExecutionException wrapping a RegistryException whose message is surfaced verbatim (ex.getMessage()) in JibBuildRunner.runBuild(). RegistryException is the registry's own error report — an error response body from the registry during blob upload/manifest push (quota exceeded, name invalid, blob unknown, server error). The build aborts because the remote registry explicitly refused the operation; the displayed text is the registry's reason, not a Jib-side diagnosis.

Source

Thrown at jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/JibBuildRunner.java:280

      if (ex.getCause() instanceof ResponseException) {
        handleRegistryUnauthorizedException(
            new RegistryUnauthorizedException(
                ex.getServerUrl(), ex.getImageName(), (ResponseException) ex.getCause()),
            helpfulSuggestions);
      } else {
        // Unknown cause
        throw new BuildStepsExecutionException(helpfulSuggestions.none(), ex);
      }

    } catch (UnknownHostException ex) {
      throw new BuildStepsExecutionException(helpfulSuggestions.forUnknownHost(), ex);

    } catch (InsecureRegistryException ex) {
      throw new BuildStepsExecutionException(helpfulSuggestions.forInsecureRegistry(), ex);

    } catch (RegistryException ex) {
      String message = Verify.verifyNotNull(ex.getMessage()); // keep null-away happy
      throw new BuildStepsExecutionException(message, ex);

    } catch (ExecutionException ex) {
      String message = ex.getCause().getMessage();
      throw new BuildStepsExecutionException(
          message == null ? "(null exception message)" : message, ex.getCause());

    } catch (InterruptedException ex) {
      Thread.currentThread().interrupt();
      throw new BuildStepsExecutionException(helpfulSuggestions.none(), ex);
    }

    throw new IllegalStateException("unreachable");
  }

  /**
   * Set the location where the image digest will be saved. If {@code null} then digest is not
   * saved.
   *

View on GitHub (pinned to fb949e2676)

Solutions

  1. Read the surfaced registry message and act on the registry-specific cause (quota, invalid tag/repository name, rate limit)
  2. Retry later if the registry reported a transient server error or rate limiting
  3. Check the repository exists and that the image name complies with the registry's naming rules
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/JibBuildRunner.java:280 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of GoogleContainerTools/jib@fb949e2676 (2026-09-06). Data as JSON: /api/errors/1c7246cfe5187ae3. Report an issue: GitHub.