Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Buildpacks Maven integration #2491

Closed
manusa opened this issue Dec 4, 2023 · 3 comments
Closed

Buildpacks Maven integration #2491

manusa opened this issue Dec 4, 2023 · 3 comments
Assignees
Milestone

Comments

@manusa
Copy link
Member

manusa commented Dec 4, 2023

Description

Part of #439

As a user, I want to be able to use JKube's buildpacks functionality from Maven, so that I can easily integrate buildpacks in my Maven project.

@rohanKanojia
Copy link
Member

We have added BuildPackBuildService in jkube-kit/config/service module.

This module is already added as a dependency in kubernetes-maven-plugin

https://github.com/eclipse/jkube/blob/d828cd269470d354e752351a0539e98c7c02f31e/kubernetes-maven-plugin/plugin/pom.xml#L39-L42

@rohanKanojia
Copy link
Member

rohanKanojia commented Feb 6, 2024

I tested on a simple Spring Boot Project and I was able to test k8s:build with BuildPacks Build strategy:

maven-it : $ mvn k8s:build -Djkube.build.strategy=buildpacks
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------< org.eclipse.jkube.demos:spring-boot3-demo-jkube >-----------
[INFO] Building jkube-buildpacks-demo-jkube 0.0.1-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- k8s:1.16-SNAPSHOT:build (default-cli) @ spring-boot3-demo-jkube ---
[INFO] k8s: Building Docker image
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java:0.0.23 as base / builder
[INFO] k8s: Spring Boot layered jar detected
[INFO] k8s: Final output artifact file was not rebuilt since last build. HINT: try to compile and package your application prior to running the container image build task.
[INFO] k8s: Delegating container image building process to BuildPacks
[INFO] k8s: Using pack /home/rokumar/.jkube/pack
[INFO] k8s: base: Pulling from paketobuildpacks/builder
[INFO] k8s: Digest: sha256:17ea21162ba8c7717d3ead3ee3836a368aced7f02f2e59658e52029bd6d149e7
[INFO] k8s: Status: Image is up to date for paketobuildpacks/builder:base
[INFO] k8s: base-cnb: Pulling from paketobuildpacks/run
[INFO] k8s: Digest: sha256:1af9935d8987fd52b2266d288200c9482d1dd5529860bbf5bc2d248de1cb1a38
[INFO] k8s: Status: Image is up to date for paketobuildpacks/run:base-cnb
[INFO] k8s: 0.16.5: Pulling from buildpacksio/lifecycle
[INFO] k8s: Digest: sha256:6328c7b662c452111e39f1f5d5d097292d07c218ba4a873f0ad0c2cb67710869
[INFO] k8s: Status: Image is up to date for buildpacksio/lifecycle:0.16.5
[INFO] k8s: ===> ANALYZING
[INFO] k8s: [analyzer] Restoring data for SBOM from previous image
[INFO] k8s: ===> DETECTING
[INFO] k8s: [detector] 10 of 26 buildpacks participating
[INFO] k8s: [detector] paketo-buildpacks/ca-certificates   3.6.3
[INFO] k8s: [detector] paketo-buildpacks/bellsoft-liberica 10.2.6
[INFO] k8s: [detector] paketo-buildpacks/syft              1.32.1
[INFO] k8s: [detector] paketo-buildpacks/maven             6.15.5
[INFO] k8s: [detector] paketo-buildpacks/executable-jar    6.7.4
[INFO] k8s: [detector] paketo-buildpacks/apache-tomcat     7.13.7
[INFO] k8s: [detector] paketo-buildpacks/apache-tomee      1.7.4
[INFO] k8s: [detector] paketo-buildpacks/liberty           3.8.2
[INFO] k8s: [detector] paketo-buildpacks/dist-zip          5.6.4
[INFO] k8s: [detector] paketo-buildpacks/spring-boot       5.26.1
[INFO] k8s: ===> RESTORING
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/ca-certificates:helper" from app image
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/bellsoft-liberica:jre" from app image
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/bellsoft-liberica:helper" from app image
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/bellsoft-liberica:java-security-properties" from app image
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/bellsoft-liberica:jdk" from cache
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/syft:syft" from cache
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/maven:application" from cache
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/maven:cache" from cache
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from app image
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/spring-boot:web-application-type" from app image
[INFO] k8s: [restorer] Restoring metadata for "paketo-buildpacks/spring-boot:helper" from app image
[INFO] k8s: [restorer] Restoring data for "paketo-buildpacks/bellsoft-liberica:jdk" from cache
[INFO] k8s: [restorer] Restoring data for "paketo-buildpacks/syft:syft" from cache
[INFO] k8s: [restorer] Restoring data for "paketo-buildpacks/maven:application" from cache
[INFO] k8s: [restorer] Restoring data for "paketo-buildpacks/maven:cache" from cache
[INFO] k8s: [restorer] Restoring data for SBOM from cache
[INFO] k8s: ===> BUILDING
[INFO] k8s: [builder] 
[INFO] k8s: [builder] Paketo Buildpack for CA Certificates 3.6.3
[INFO] k8s: [builder]   https://github.com/paketo-buildpacks/ca-certificates
[INFO] k8s: [builder]   Launch Helper: Reusing cached layer
[INFO] k8s: [builder] 
[INFO] k8s: [builder] Paketo Buildpack for BellSoft Liberica 10.2.6
[INFO] k8s: [builder]   https://github.com/paketo-buildpacks/bellsoft-liberica
[INFO] k8s: [builder]   Build Configuration:
[INFO] k8s: [builder]     $BP_JVM_JLINK_ARGS           --no-man-pages --no-header-files --strip-debug --compress=1  configure custom link arguments (--output must be omitted)
[INFO] k8s: [builder]     $BP_JVM_JLINK_ENABLED        false                                                        enables running jlink tool to generate custom JRE
[INFO] k8s: [builder]     $BP_JVM_TYPE                 JRE                                                          the JVM type - JDK or JRE
[INFO] k8s: [builder]     $BP_JVM_VERSION              17                                                           the Java version
[INFO] k8s: [builder]   Launch Configuration:
[INFO] k8s: [builder]     $BPL_DEBUG_ENABLED           false                                                        enables Java remote debugging support
[INFO] k8s: [builder]     $BPL_DEBUG_PORT              8000                                                         configure the remote debugging port
[INFO] k8s: [builder]     $BPL_DEBUG_SUSPEND           false                                                        configure whether to suspend execution until a debugger has attached
[INFO] k8s: [builder]     $BPL_HEAP_DUMP_PATH                                                                       write heap dumps on error to this path
[INFO] k8s: [builder]     $BPL_JAVA_NMT_ENABLED        true                                                         enables Java Native Memory Tracking (NMT)
[INFO] k8s: [builder]     $BPL_JAVA_NMT_LEVEL          summary                                                      configure level of NMT, summary or detail
[INFO] k8s: [builder]     $BPL_JFR_ARGS                                                                             configure custom Java Flight Recording (JFR) arguments
[INFO] k8s: [builder]     $BPL_JFR_ENABLED             false                                                        enables Java Flight Recording (JFR)
[INFO] k8s: [builder]     $BPL_JMX_ENABLED             false                                                        enables Java Management Extensions (JMX)
[INFO] k8s: [builder]     $BPL_JMX_PORT                5000                                                         configure the JMX port
[INFO] k8s: [builder]     $BPL_JVM_HEAD_ROOM           0                                                            the headroom in memory calculation
[INFO] k8s: [builder]     $BPL_JVM_LOADED_CLASS_COUNT  35% of classes                                               the number of loaded classes in memory calculation
[INFO] k8s: [builder]     $BPL_JVM_THREAD_COUNT        250                                                          the number of threads in memory calculation
[INFO] k8s: [builder]     $JAVA_TOOL_OPTIONS                                                                        the JVM launch flags
[INFO] k8s: [builder]     Using buildpack default Java version 17
[INFO] k8s: [builder]   BellSoft Liberica JDK 17.0.7: Reusing cached layer
[INFO] k8s: [builder]   BellSoft Liberica JRE 17.0.7: Reusing cached layer
[INFO] k8s: [builder]   Launch Helper: Reusing cached layer
[INFO] k8s: [builder]   Java Security Properties: Reusing cached layer
[INFO] k8s: [builder] 
[INFO] k8s: [builder] Paketo Buildpack for Syft 1.32.1
[INFO] k8s: [builder]   https://github.com/paketo-buildpacks/syft
[INFO] k8s: [builder]     Downloading from https://github.com/anchore/syft/releases/download/v0.84.0/syft_0.84.0_linux_amd64.tar.gz
[INFO] k8s: [builder]     Verifying checksum
[INFO] k8s: [builder]     Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default
[INFO] k8s: [builder] 
[INFO] k8s: [builder] Paketo Buildpack for Maven 6.15.5
[INFO] k8s: [builder]   https://github.com/paketo-buildpacks/maven
[INFO] k8s: [builder]   Build Configuration:
[INFO] k8s: [builder]     $BP_EXCLUDE_FILES                                                                            colon separated list of glob patterns, matched source files are removed
[INFO] k8s: [builder]     $BP_INCLUDE_FILES                                                                            colon separated list of glob patterns, matched source files are included
[INFO] k8s: [builder]     $BP_JAVA_INSTALL_NODE                 false                                                  whether to install Yarn/Node binaries based on the presence of a package.json or yarn.lock file
[INFO] k8s: [builder]     $BP_MAVEN_ACTIVE_PROFILES                                                                    the active profiles (comma separated: such as: p1,!p2,?p3) to pass to Maven
[INFO] k8s: [builder]     $BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS                                                         the additionnal arguments (appended to BP_MAVEN_BUILD_ARGUMENTS) to pass to Maven
[INFO] k8s: [builder]     $BP_MAVEN_BUILD_ARGUMENTS             -Dmaven.test.skip=true --no-transfer-progress package  the arguments to pass to Maven
[INFO] k8s: [builder]     $BP_MAVEN_BUILT_ARTIFACT              target/*.[ejw]ar                                       the built application artifact explicitly.  Supersedes $BP_MAVEN_BUILT_MODULE
[INFO] k8s: [builder]     $BP_MAVEN_BUILT_MODULE                                                                       the module to find application artifact in
[INFO] k8s: [builder]     $BP_MAVEN_DAEMON_ENABLED              false                                                  use maven daemon
[INFO] k8s: [builder]     $BP_MAVEN_POM_FILE                    pom.xml                                                the location of the main pom.xml file, relative to the application root
[INFO] k8s: [builder]     $BP_MAVEN_SETTINGS_PATH                                                                      the path to a Maven settings file
[INFO] k8s: [builder]     $BP_MAVEN_VERSION                     3                                                      the Maven version
[INFO] k8s: [builder]     $BP_NODE_PROJECT_PATH                                                                        configure a project subdirectory to look for `package.json` and `yarn.lock` files
[INFO] k8s: [builder]     Creating cache directory /home/cnb/.m2
[INFO] k8s: [builder]   Compiled Application: Reusing cached layer
[INFO] k8s: [builder]   Removing source code
[INFO] k8s: [builder]   Restoring application artifact
[INFO] k8s: [builder] 
[INFO] k8s: [builder] Paketo Buildpack for Executable JAR 6.7.4
[INFO] k8s: [builder]   https://github.com/paketo-buildpacks/executable-jar
[INFO] k8s: [builder]   Class Path: Contributing to layer
[INFO] k8s: [builder]     Writing env/CLASSPATH.delim
[INFO] k8s: [builder]     Writing env/CLASSPATH.prepend
[INFO] k8s: [builder]   Process types:
[INFO] k8s: [builder]     executable-jar: java org.springframework.boot.loader.JarLauncher (direct)
[INFO] k8s: [builder]     task:           java org.springframework.boot.loader.JarLauncher (direct)
[INFO] k8s: [builder]     web:            java org.springframework.boot.loader.JarLauncher (direct)
[INFO] k8s: [builder] SKIPPED: `Main-Class` found in `META-INF/MANIFEST.MF`, skipping build
[INFO] k8s: [builder] 
[INFO] k8s: [builder] Paketo Buildpack for Spring Boot 5.26.1
[INFO] k8s: [builder]   https://github.com/paketo-buildpacks/spring-boot
[INFO] k8s: [builder]   Build Configuration:
[INFO] k8s: [builder]     $BP_SPRING_CLOUD_BINDINGS_DISABLED   false  whether to contribute Spring Boot cloud bindings support
[INFO] k8s: [builder]   Launch Configuration:
[INFO] k8s: [builder]     $BPL_SPRING_CLOUD_BINDINGS_DISABLED  false  whether to auto-configure Spring Boot environment properties from bindings
[INFO] k8s: [builder]     $BPL_SPRING_CLOUD_BINDINGS_ENABLED   true   Deprecated - whether to auto-configure Spring Boot environment properties from bindings
[INFO] k8s: [builder]   Creating slices from layers index
[INFO] k8s: [builder]     dependencies (20.5 MB)
[INFO] k8s: [builder]     spring-boot-loader (237.0 KB)
[INFO] k8s: [builder]     snapshot-dependencies (0.0 B)
[INFO] k8s: [builder]     application (16.0 KB)
[INFO] k8s: [builder]   Launch Helper: Reusing cached layer
[INFO] k8s: [builder]   Spring Cloud Bindings 1.13.0: Contributing to layer
[INFO] k8s: [builder]     Downloading from https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-bindings/1.13.0/spring-cloud-bindings-1.13.0.jar
[INFO] k8s: [builder]     Verifying checksum
[INFO] k8s: [builder]     Copying to /layers/paketo-buildpacks_spring-boot/spring-cloud-bindings
[INFO] k8s: [builder]   Web Application Type: Reusing cached layer
[INFO] k8s: [builder]   4 application slices
[INFO] k8s: [builder]   Image labels:
[INFO] k8s: [builder]     org.opencontainers.image.title
[INFO] k8s: [builder]     org.opencontainers.image.version
[INFO] k8s: [builder]     org.springframework.boot.version
[INFO] k8s: ===> EXPORTING
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/ca-certificates:helper'
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/bellsoft-liberica:helper'
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/bellsoft-liberica:jre'
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/executable-jar:classpath'
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/spring-boot:helper'
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
[INFO] k8s: [exporter] Reusing layer 'paketo-buildpacks/spring-boot:web-application-type'
[INFO] k8s: [exporter] Reusing layer 'buildpacksio/lifecycle:launch.sbom'
[INFO] k8s: [exporter] Reusing 5/5 app layer(s)
[INFO] k8s: [exporter] Reusing layer 'buildpacksio/lifecycle:launcher'
[INFO] k8s: [exporter] Reusing layer 'buildpacksio/lifecycle:config'
[INFO] k8s: [exporter] Reusing layer 'buildpacksio/lifecycle:process-types'
[INFO] k8s: [exporter] Adding label 'io.buildpacks.lifecycle.metadata'
[INFO] k8s: [exporter] Adding label 'io.buildpacks.build.metadata'
[INFO] k8s: [exporter] Adding label 'io.buildpacks.project.metadata'
[INFO] k8s: [exporter] Adding label 'org.opencontainers.image.title'
[INFO] k8s: [exporter] Adding label 'org.opencontainers.image.version'
[INFO] k8s: [exporter] Adding label 'org.springframework.boot.version'
[INFO] k8s: [exporter] Setting default process type 'web'
[INFO] k8s: [exporter] Saving user/spring-boot3-demo-jkube:latest...
[INFO] k8s: [exporter] *** Images (d9587aad9112):
[INFO] k8s: [exporter]       user/spring-boot3-demo-jkube:latest
[INFO] k8s: [exporter] Reusing cache layer 'paketo-buildpacks/bellsoft-liberica:jdk'
[INFO] k8s: [exporter] Reusing cache layer 'paketo-buildpacks/syft:syft'
[INFO] k8s: [exporter] Reusing cache layer 'paketo-buildpacks/maven:application'
[INFO] k8s: [exporter] Reusing cache layer 'paketo-buildpacks/maven:cache'
[INFO] k8s: [exporter] Reusing cache layer 'buildpacksio/lifecycle:cache.sbom'
[INFO] k8s: Successfully built image 'user/spring-boot3-demo-jkube:latest'
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  25.154 s
[INFO] Finished at: 2024-02-06T21:57:58+05:30
[INFO] ------------------------------------------------------------------------
```

@manusa manusa added this to the 1.16.0 milestone Feb 7, 2024
@manusa
Copy link
Member Author

manusa commented Feb 7, 2024

Closing as complete

@manusa manusa closed this as completed Feb 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants