builder version 20230204

Featured image

It has been super busy since the last release. There was a request from someone on Twitter, for a different approach to versioning. I had a hard time trying to figure out the best approach since I wanted to be as close to upstream as possible.

I’m happy to share that I have pushed a new version of the multi-architecture builder. This release has 2 tags:

  • dashaun/builder:20230204 for repeatable builds
  • dashaun/builder:tiny to align with the upstream

https://hub.docker.com/r/dashaun/builder

I’m still super excited to see how much support was put behind ARM64 support on the Paketo 2023 roadmap. I will be focusing some time on this project for the next couple of weeks.

I’ve seen some reports of things not working. I’m hoping this new release fixes things.

As always, feedback is welcome.

Tests

Output from testing the new building on my local M1 is below.

./mvnw -Pnative spring-boot:build-image -DskipTests
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------------< com.example:demo >--------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] >>> spring-boot-maven-plugin:3.0.0:build-image (default-cli) > package @ demo >>>
[INFO] 
[INFO] --- native-maven-plugin:0.9.18:add-reachability-metadata (add-reachability-metadata) @ demo ---
[INFO] [graalvm reachability metadata repository for ch.qos.logback:logback-classic:1.4.5]: Configuration directory not found. Trying latest version.
[INFO] [graalvm reachability metadata repository for ch.qos.logback:logback-classic:1.4.5]: Configuration directory is ch.qos.logback/logback-classic/1.4.1
[INFO] [graalvm reachability metadata repository for org.hdrhistogram:HdrHistogram:2.1.12]: Configuration directory is org.hdrhistogram/HdrHistogram/2.1.12
[INFO] [graalvm reachability metadata repository for org.apache.tomcat.embed:tomcat-embed-core:10.1.1]: Configuration directory not found. Trying latest version.
[INFO] [graalvm reachability metadata repository for org.apache.tomcat.embed:tomcat-embed-core:10.1.1]: Configuration directory is org.apache.tomcat.embed/tomcat-embed-core/10.0.20
[INFO] 
[INFO] --- maven-resources-plugin:3.3.0:resources (default-resources) @ demo ---
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.3.0:testResources (default-testResources) @ demo ---
[INFO] skip non existing resourceDirectory /Users/dashaun/fun/arm64-validate/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.10.1:testCompile (default-testCompile) @ demo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ demo ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- spring-boot-maven-plugin:3.0.0:process-aot (process-aot) @ demo ---

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.0.0)

2023-02-03T22:52:31.443-06:00  INFO 82408 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 17.0.5 with PID 82408 (/Users/dashaun/fun/arm64-validate/target/classes started by dashaun in /Users/dashaun/fun/arm64-validate)
2023-02-03T22:52:31.446-06:00  INFO 82408 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
[INFO] 
[INFO] --- maven-jar-plugin:3.3.0:jar (default-jar) @ demo ---
[INFO] Building jar: /Users/dashaun/fun/arm64-validate/target/demo-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:3.0.0:repackage (repackage) @ demo ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] <<< spring-boot-maven-plugin:3.0.0:build-image (default-cli) < package @ demo <<<
[INFO] 
[INFO] 
[INFO] --- spring-boot-maven-plugin:3.0.0:build-image (default-cli) @ demo ---
[INFO] Building image 'docker.io/library/demo:0.0.1-SNAPSHOT'
[INFO] 
[INFO]  > Pulling builder image 'docker.io/dashaun/builder:20230204' 2%
[INFO]  > Pulling builder image 'docker.io/dashaun/builder:20230204' 9%
[INFO]  > Pulling builder image 'docker.io/dashaun/builder:20230204' 13%
[INFO]  > Pulling builder image 'docker.io/dashaun/builder:20230204' 19%
[INFO]  > Pulling builder image 'docker.io/dashaun/builder:20230204' 24%
[INFO]  > Pulling builder image 'docker.io/dashaun/builder:20230204' 52%
[INFO]  > Pulling builder image 'docker.io/dashaun/builder:20230204' 100%
[INFO]  > Pulled builder image 'dashaun/builder@sha256:ca2a857e716b369a77c8c8e7442a7dc6488f2188e0c13c1adc6bf61fe0a61e62'
[INFO]  > Pulling run image 'docker.io/dashaun/jammy-run:tiny' 100%
[INFO]  > Pulled run image 'dashaun/jammy-run@sha256:9cd92927ddd52a742108507fd58140dc1a87a30fdf560e96ebe658ee0873b902'
[INFO]  > Executing lifecycle version v0.15.3
[INFO]  > Using build cache volume 'pack-cache-5cbe5692dbc4.build'
[INFO] 
[INFO]  > Running creator
[INFO]     [creator]     ===> ANALYZING
[INFO]     [creator]     Previous image with name "docker.io/library/demo:0.0.1-SNAPSHOT" not found
[INFO]     [creator]     ===> DETECTING
[INFO]     [creator]     6 of 14 buildpacks participating
[INFO]     [creator]     paketo-buildpacks/ca-certificates   3.5.1
[INFO]     [creator]     paketo-buildpacks/bellsoft-liberica 9.10.3
[INFO]     [creator]     paketo-buildpacks/syft              1.23.0
[INFO]     [creator]     paketo-buildpacks/executable-jar    6.5.0
[INFO]     [creator]     paketo-buildpacks/spring-boot       5.22.1
[INFO]     [creator]     paketo-buildpacks/native-image      5.8.0
[INFO]     [creator]     ===> RESTORING
[INFO]     [creator]     ===> BUILDING
[INFO]     [creator]     
[INFO]     [creator]     Paketo Buildpack for CA Certificates 3.5.1
[INFO]     [creator]       https://github.com/paketo-buildpacks/ca-certificates
[INFO]     [creator]       Launch Helper: Contributing to layer
[INFO]     [creator]         Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
[INFO]     [creator]     
[INFO]     [creator]     Paketo Buildpack for BellSoft Liberica 9.10.3
[INFO]     [creator]       https://github.com/paketo-buildpacks/bellsoft-liberica
[INFO]     [creator]       Build Configuration:
[INFO]     [creator]         $BP_JVM_JLINK_ARGS           --no-man-pages --no-header-files --strip-debug --compress=1  configure custom link arguments (--output must be omitted)
[INFO]     [creator]         $BP_JVM_JLINK_ENABLED        false                                                        enables running jlink tool to generate custom JRE
[INFO]     [creator]         $BP_JVM_TYPE                 JRE                                                          the JVM type - JDK or JRE
[INFO]     [creator]         $BP_JVM_VERSION              11                                                           the Java version
[INFO]     [creator]       Launch Configuration:
[INFO]     [creator]         $BPL_DEBUG_ENABLED           false                                                        enables Java remote debugging support
[INFO]     [creator]         $BPL_DEBUG_PORT              8000                                                         configure the remote debugging port
[INFO]     [creator]         $BPL_DEBUG_SUSPEND           false                                                        configure whether to suspend execution until a debugger has attached
[INFO]     [creator]         $BPL_HEAP_DUMP_PATH                                                                       write heap dumps on error to this path
[INFO]     [creator]         $BPL_JAVA_NMT_ENABLED        true                                                         enables Java Native Memory Tracking (NMT)
[INFO]     [creator]         $BPL_JAVA_NMT_LEVEL          summary                                                      configure level of NMT, summary or detail
[INFO]     [creator]         $BPL_JFR_ARGS                                                                             configure custom Java Flight Recording (JFR) arguments
[INFO]     [creator]         $BPL_JFR_ENABLED             false                                                        enables Java Flight Recording (JFR)
[INFO]     [creator]         $BPL_JMX_ENABLED             false                                                        enables Java Management Extensions (JMX)
[INFO]     [creator]         $BPL_JMX_PORT                5000                                                         configure the JMX port
[INFO]     [creator]         $BPL_JVM_HEAD_ROOM           0                                                            the headroom in memory calculation
[INFO]     [creator]         $BPL_JVM_LOADED_CLASS_COUNT  35% of classes                                               the number of loaded classes in memory calculation
[INFO]     [creator]         $BPL_JVM_THREAD_COUNT        250                                                          the number of threads in memory calculation
[INFO]     [creator]         $JAVA_TOOL_OPTIONS                                                                        the JVM launch flags
[INFO]     [creator]         Using Java version 17 extracted from MANIFEST.MF
[INFO]     [creator]       BellSoft Liberica NIK 17.0.6: Contributing to layer
[INFO]     [creator]         Downloading from https://download.bell-sw.com/vm/22.3.1/bellsoft-liberica-vm-core-openjdk17.0.6+10-22.3.1+1-linux-aarch64.tar.gz
[INFO]     [creator]         Verifying checksum
[INFO]     [creator]         Expanding to /layers/paketo-buildpacks_bellsoft-liberica/native-image-svm
[INFO]     [creator]         Adding 124 container CA certificates to JVM truststore
[INFO]     [creator]         Writing env.build/JAVA_HOME.override
[INFO]     [creator]         Writing env.build/JDK_HOME.override
[INFO]     [creator]     
[INFO]     [creator]     Paketo Buildpack for Syft 1.23.0
[INFO]     [creator]       https://github.com/paketo-buildpacks/syft
[INFO]     [creator]         Downloading from https://github.com/anchore/syft/releases/download/v0.62.1/syft_0.62.1_linux_arm64.tar.gz
[INFO]     [creator]         Verifying checksum
[INFO]     [creator]         Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default
[INFO]     [creator]     
[INFO]     [creator]     Paketo Buildpack for Executable JAR 6.5.0
[INFO]     [creator]       https://github.com/paketo-buildpacks/executable-jar
[INFO]     [creator]       Class Path: Contributing to layer
[INFO]     [creator]         Writing env.build/CLASSPATH.delim
[INFO]     [creator]         Writing env.build/CLASSPATH.prepend
[INFO]     [creator]     
[INFO]     [creator]     Paketo Buildpack for Spring Boot 5.22.1
[INFO]     [creator]       https://github.com/paketo-buildpacks/spring-boot
[INFO]     [creator]       Build Configuration:
[INFO]     [creator]         $BP_SPRING_CLOUD_BINDINGS_DISABLED   false  whether to contribute Spring Boot cloud bindings support
[INFO]     [creator]       Launch Configuration:
[INFO]     [creator]         $BPL_SPRING_CLOUD_BINDINGS_DISABLED  false  whether to auto-configure Spring Boot environment properties from bindings
[INFO]     [creator]         $BPL_SPRING_CLOUD_BINDINGS_ENABLED   true   Deprecated - whether to auto-configure Spring Boot environment properties from bindings
[INFO]     [creator]       Class Path: Contributing to layer
[INFO]     [creator]         Writing env.build/CLASSPATH.append
[INFO]     [creator]         Writing env.build/CLASSPATH.delim
[INFO]     [creator]       Image labels:
[INFO]     [creator]         org.opencontainers.image.title
[INFO]     [creator]         org.opencontainers.image.version
[INFO]     [creator]         org.springframework.boot.version
[INFO]     [creator]     Warning: BOM table is deprecated in this buildpack api version, though it remains supported for backwards compatibility. Buildpack authors should write BOM information to <layer>.sbom.<ext>, launch.sbom.<ext>, or build.sbom.<ext>.
[INFO]     [creator]     
[INFO]     [creator]     Paketo Buildpack for Native Image 5.8.0
[INFO]     [creator]       https://github.com/paketo-buildpacks/native-image
[INFO]     [creator]       Build Configuration:
[INFO]     [creator]         $BP_BINARY_COMPRESSION_METHOD                Compression mechanism used to reduce binary size. Options: `none` (default), `upx` or `gzexe`
[INFO]     [creator]         $BP_NATIVE_IMAGE                       true  enable native image build
[INFO]     [creator]         $BP_NATIVE_IMAGE_BUILD_ARGUMENTS             arguments to pass to the native-image command
[INFO]     [creator]         $BP_NATIVE_IMAGE_BUILD_ARGUMENTS_FILE        a file with arguments to pass to the native-image command
[INFO]     [creator]         $BP_NATIVE_IMAGE_BUILT_ARTIFACT              the built application artifact explicitly, required if building from a JAR
[INFO]     [creator]       Native Image: Contributing to layer
[INFO]     [creator]         Executing native-image -H:+StaticExecutableWithDynamicLibC -H:Name=/layers/paketo-buildpacks_native-image/native-image/com.example.demo.DemoApplication -cp /workspace:/workspace/BOOT-INF/classes:/workspace/BOOT-INF/lib/spring-boot-3.0.0.jar:/workspace/BOOT-INF/lib/spring-boot-autoconfigure-3.0.0.jar:/workspace/BOOT-INF/lib/logback-classic-1.4.5.jar:/workspace/BOOT-INF/lib/logback-core-1.4.5.jar:/workspace/BOOT-INF/lib/log4j-to-slf4j-2.19.0.jar:/workspace/BOOT-INF/lib/log4j-api-2.19.0.jar:/workspace/BOOT-INF/lib/jul-to-slf4j-2.0.4.jar:/workspace/BOOT-INF/lib/jakarta.annotation-api-2.1.1.jar:/workspace/BOOT-INF/lib/snakeyaml-1.33.jar:/workspace/BOOT-INF/lib/spring-boot-actuator-autoconfigure-3.0.0.jar:/workspace/BOOT-INF/lib/spring-boot-actuator-3.0.0.jar:/workspace/BOOT-INF/lib/jackson-databind-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-annotations-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-core-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-datatype-jsr310-2.14.1.jar:/workspace/BOOT-INF/lib/micrometer-observation-1.10.2.jar:/workspace/BOOT-INF/lib/micrometer-commons-1.10.2.jar:/workspace/BOOT-INF/lib/micrometer-core-1.10.2.jar:/workspace/BOOT-INF/lib/HdrHistogram-2.1.12.jar:/workspace/BOOT-INF/lib/LatencyUtils-2.0.3.jar:/workspace/BOOT-INF/lib/jackson-datatype-jdk8-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-module-parameter-names-2.14.1.jar:/workspace/BOOT-INF/lib/tomcat-embed-core-10.1.1.jar:/workspace/BOOT-INF/lib/tomcat-embed-el-10.1.1.jar:/workspace/BOOT-INF/lib/tomcat-embed-websocket-10.1.1.jar:/workspace/BOOT-INF/lib/spring-web-6.0.2.jar:/workspace/BOOT-INF/lib/spring-beans-6.0.2.jar:/workspace/BOOT-INF/lib/spring-webmvc-6.0.2.jar:/workspace/BOOT-INF/lib/spring-aop-6.0.2.jar:/workspace/BOOT-INF/lib/spring-context-6.0.2.jar:/workspace/BOOT-INF/lib/spring-expression-6.0.2.jar:/workspace/BOOT-INF/lib/slf4j-api-2.0.4.jar:/workspace/BOOT-INF/lib/spring-core-6.0.2.jar:/workspace/BOOT-INF/lib/spring-jcl-6.0.2.jar:/workspace/BOOT-INF/lib/spring-boot-jarmode-layertools-3.0.0.jar com.example.demo.DemoApplication
[INFO]     [creator]     ================================================================================
[INFO]     [creator]     GraalVM Native Image: Generating '/layers/paketo-buildpacks_native-image/native-image/com.example.demo.DemoApplication' (static executable)...
[INFO]     [creator]     ================================================================================
[INFO]     [creator]     [1/7] Initializing...                                            (4.7s @ 0.21GB)
[INFO]     [creator]      Version info: 'GraalVM 22.3.1 Java 17 CE'
[INFO]     [creator]      Java version info: '17.0.6+10-LTS'
[INFO]     [creator]      C compiler: gcc (linux, aarch64, 11.3.0)
[INFO]     [creator]      Garbage collector: Serial GC
[INFO]     [creator]      1 user-specific feature(s)
[INFO]     [creator]      - org.springframework.aot.nativex.feature.PreComputeFieldFeature
[INFO]     [creator]     The bundle named: org.apache.el.Messages, has not been found. If the bundle is part of a module, verify the bundle name is a fully qualified class name. Otherwise verify the bundle path is accessible in the classpath.
[INFO]     [creator]     Field org.apache.commons.logging.LogAdapter#log4jSpiPresent set to true at build time
[INFO]     [creator]     Field org.apache.commons.logging.LogAdapter#log4jSlf4jProviderPresent set to true at build time
[INFO]     [creator]     Field org.apache.commons.logging.LogAdapter#slf4jSpiPresent set to true at build time
[INFO]     [creator]     Field org.apache.commons.logging.LogAdapter#slf4jApiPresent set to true at build time
[INFO]     [creator]     Field org.springframework.core.NativeDetector#imageCode set to true at build time
[INFO]     [creator]     Field org.springframework.core.KotlinDetector#kotlinPresent set to false at build time
[INFO]     [creator]     Field org.springframework.core.KotlinDetector#kotlinReflectPresent set to false at build time
[INFO]     [creator]     Field org.springframework.format.support.DefaultFormattingConversionService#jsr354Present set to false at build time
[INFO]     [creator]     Field org.springframework.cglib.core.AbstractClassGenerator#imageCode set to true at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#romePresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#jaxb2Present set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#jackson2Present set to true at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#jackson2XmlPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#jackson2SmilePresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#jackson2CborPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#gsonPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#jsonbPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#kotlinSerializationCborPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#kotlinSerializationJsonPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#kotlinSerializationProtobufPresent set to false at build time
[INFO]     [creator]     Field org.springframework.boot.logging.logback.LogbackLoggingSystem$Factory#PRESENT set to true at build time
[INFO]     [creator]     Field org.springframework.boot.logging.log4j2.Log4J2LoggingSystem$Factory#PRESENT set to false at build time
[INFO]     [creator]     Field org.springframework.boot.logging.java.JavaLoggingSystem$Factory#PRESENT set to true at build time
[INFO]     [creator]     Field org.springframework.web.context.support.StandardServletEnvironment#jndiPresent set to true at build time
[INFO]     [creator]     Field org.springframework.web.context.support.WebApplicationContextUtils#jsfPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.context.request.RequestContextHolder#jsfPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.view.InternalResourceViewResolver#jstlPresent set to false at build time
[INFO]     [creator]     Field org.springframework.boot.logging.logback.LogbackLoggingSystemProperties#JBOSS_LOGGING_PRESENT set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#jaxb2Present set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#jackson2Present set to true at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#jackson2XmlPresent set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#jackson2SmilePresent set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#gsonPresent set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#jsonbPresent set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#kotlinSerializationCborPresent set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#kotlinSerializationJsonPresent set to false at build time
[INFO]     [creator]     Field org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter#kotlinSerializationProtobufPresent set to false at build time
[INFO]     [creator]     Field org.springframework.context.event.ApplicationListenerMethodAdapter#reactiveStreamsPresent set to false at build time
[INFO]     [creator]     Field org.springframework.core.ReactiveAdapterRegistry#reactorPresent set to false at build time
[INFO]     [creator]     Field org.springframework.core.ReactiveAdapterRegistry#rxjava3Present set to false at build time
[INFO]     [creator]     Field org.springframework.core.ReactiveAdapterRegistry#kotlinCoroutinesPresent set to false at build time
[INFO]     [creator]     Field org.springframework.core.ReactiveAdapterRegistry#mutinyPresent set to false at build time
[INFO]     [creator]     Field org.springframework.boot.actuate.endpoint.web.annotation.DiscoveredWebOperation#REACTIVE_STREAMS_PRESENT set to false at build time
[INFO]     [creator]     Field org.springframework.boot.actuate.endpoint.invoke.reflect.OperationMethodParameter#jsr305Present set to false at build time
[INFO]     [creator]     SLF4J: No SLF4J providers were found.
[INFO]     [creator]     SLF4J: Defaulting to no-operation (NOP) logger implementation
[INFO]     [creator]     SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
[INFO]     [creator]     Field org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler#isContextPropagationPresent set to false at build time
[INFO]     [creator]     Field org.springframework.boot.autoconfigure.web.format.WebConversionService#JSR_354_PRESENT set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#romePresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#jaxb2Present set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#jackson2Present set to true at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#jackson2XmlPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#jackson2SmilePresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#jackson2CborPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#gsonPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#jsonbPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#kotlinSerializationCborPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#kotlinSerializationJsonPresent set to false at build time
[INFO]     [creator]     Field org.springframework.web.client.RestTemplate#kotlinSerializationProtobufPresent set to false at build time
[INFO]     [creator]     Field org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvoker#IS_REACTOR_PRESENT set to false at build time
[INFO]     [creator]     Field org.springframework.web.servlet.support.RequestContext#jstlPresent set to false at build time
[INFO]     [creator]     [2/7] Performing analysis...  [**********]                      (36.2s @ 1.29GB)
[INFO]     [creator]       16,489 (92.66%) of 17,796 classes reachable
[INFO]     [creator]       26,202 (67.89%) of 38,595 fields reachable
[INFO]     [creator]       77,345 (62.52%) of 123,718 methods reachable
[INFO]     [creator]          884 classes,   188 fields, and 3,869 methods registered for reflection
[INFO]     [creator]           64 classes,    70 fields, and    55 methods registered for JNI access
[INFO]     [creator]            4 native libraries: dl, pthread, rt, z
[INFO]     [creator]     [3/7] Building universe...                                       (4.1s @ 2.81GB)
[INFO]     [creator]     [4/7] Parsing methods...      [**]                               (3.0s @ 2.15GB)
[INFO]     [creator]     [5/7] Inlining methods...     [***]                              (1.9s @ 1.89GB)
[INFO]     [creator]     [6/7] Compiling methods...    [*****]                           (25.9s @ 2.86GB)
[INFO]     [creator]     [7/7] Creating image...                                          (5.4s @ 1.86GB)
[INFO]     [creator]       35.49MB (47.58%) for code area:    50,542 compilation units
[INFO]     [creator]       36.29MB (48.64%) for image heap:  374,831 objects and 423 resources
[INFO]     [creator]        2.82MB ( 3.78%) for other data
[INFO]     [creator]       74.60MB in total
[INFO]     [creator]     --------------------------------------------------------------------------------
[INFO]     [creator]     Top 10 packages in code area:           Top 10 object types in image heap:
[INFO]     [creator]        1.65MB sun.security.ssl                 7.53MB byte[] for code metadata
[INFO]     [creator]        1.10MB java.util                        4.75MB byte[] for embedded resources
[INFO]     [creator]      844.20KB java.lang.invoke                 3.91MB java.lang.Class
[INFO]     [creator]      713.52KB com.sun.crypto.provider          3.53MB java.lang.String
[INFO]     [creator]      569.07KB org.apache.catalina.core         3.14MB byte[] for general heap data
[INFO]     [creator]      509.20KB org.apache.tomcat.util.net       2.99MB byte[] for java.lang.String
[INFO]     [creator]      503.81KB java.lang                        1.38MB c.o.s.c.h.DynamicHubCompanion
[INFO]     [creator]      495.12KB c.s.o.a.x.i.i.xs.traversers    878.04KB byte[] for reflection metadata
[INFO]     [creator]      465.84KB org.apache.coyote.http2        686.15KB java.lang.String[]
[INFO]     [creator]      464.48KB java.util.concurrent           582.56KB java.util.HashMap$Node
[INFO]     [creator]       28.00MB for 699 more packages            5.86MB for 3326 more object types
[INFO]     [creator]     --------------------------------------------------------------------------------
[INFO]     [creator]         7.4s (8.6% of total time) in 79 GCs | Peak RSS: 4.66GB | CPU load: 3.96
[INFO]     [creator]     --------------------------------------------------------------------------------
[INFO]     [creator]     Produced artifacts:
[INFO]     [creator]      /layers/paketo-buildpacks_native-image/native-image/com.example.demo.DemoApplication (executable)
[INFO]     [creator]      /layers/paketo-buildpacks_native-image/native-image/com.example.demo.DemoApplication.build_artifacts.txt (txt)
[INFO]     [creator]     ================================================================================
[INFO]     [creator]     Finished generating '/layers/paketo-buildpacks_native-image/native-image/com.example.demo.DemoApplication' in 1m 25s.
[INFO]     [creator]       Removing bytecode
[INFO]     [creator]       Process types:
[INFO]     [creator]         native-image: /workspace/com.example.demo.DemoApplication (direct)
[INFO]     [creator]         task:         /workspace/com.example.demo.DemoApplication (direct)
[INFO]     [creator]         web:          /workspace/com.example.demo.DemoApplication (direct)
[INFO]     [creator]     ===> EXPORTING
[INFO]     [creator]     Adding layer 'paketo-buildpacks/ca-certificates:helper'
[INFO]     [creator]     Adding layer 'launch.sbom'
[INFO]     [creator]     Adding 1/1 app layer(s)
[INFO]     [creator]     Adding layer 'launcher'
[INFO]     [creator]     Adding layer 'config'
[INFO]     [creator]     Adding layer 'process-types'
[INFO]     [creator]     Adding label 'io.buildpacks.lifecycle.metadata'
[INFO]     [creator]     Adding label 'io.buildpacks.build.metadata'
[INFO]     [creator]     Adding label 'io.buildpacks.project.metadata'
[INFO]     [creator]     Adding label 'org.opencontainers.image.title'
[INFO]     [creator]     Adding label 'org.opencontainers.image.version'
[INFO]     [creator]     Adding label 'org.springframework.boot.version'
[INFO]     [creator]     Setting default process type 'web'
[INFO]     [creator]     Saving docker.io/library/demo:0.0.1-SNAPSHOT...
[INFO]     [creator]     *** Images (086b5a91c2ec):
[INFO]     [creator]           docker.io/library/demo:0.0.1-SNAPSHOT
[INFO]     [creator]     Adding cache layer 'paketo-buildpacks/bellsoft-liberica:native-image-svm'
[INFO]     [creator]     Adding cache layer 'paketo-buildpacks/syft:syft'
[INFO]     [creator]     Adding cache layer 'paketo-buildpacks/native-image:native-image'
[INFO]     [creator]     Adding cache layer 'cache.sbom'
[INFO] 
[INFO] Successfully built image 'docker.io/library/demo:0.0.1-SNAPSHOT'
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:09 min
[INFO] Finished at: 2023-02-03T22:54:40-06:00
[INFO] ------------------------------------------------------------------------

Run the image:

docker run --rm -d -p 8080:8080 demo:0.0.1-SNAPSHOT
2b984961cacdb92296914c1297439b2f8ca8b90d7d8f9ce41e99830f456702de

Test the image:

http :8080/actuator/health
HTTP/1.1 200 
Connection: keep-alive
Content-Type: application/vnd.spring-boot.actuator.v3+json
Date: Sat, 04 Feb 2023 05:04:36 GMT
Keep-Alive: timeout=60
Transfer-Encoding: chunked

{
    "status": "UP"
}

Momentum

I was so happy to get this release out the door, that I actually recorded a video too.

Builder Over and Test