private Future<Image> buildImage(
      Image baseImage,
      List<Future<PreparedLayer>> baseLayers,
      ProgressEventDispatcher.Factory progressDispatcherFactory) {
    return executorService.submit(
        () ->
            new BuildImageStep(
                    buildContext,
                    progressDispatcherFactory,
                    baseImage,
                    realizeFutures(baseLayers),
                    realizeFutures(Verify.verifyNotNull(results.applicationLayers)))
                .call());
  }
Run all steps and return a BuildResult after a build is completed.

@return a {@link BuildResult} with build metadata
@throws ExecutionException if an error occurred during asynchronous execution of steps
@throws InterruptedException if the build was interrupted while waiting for results
jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/StepsRunner.java