Coder Social home page Coder Social logo

java's Introduction

java's People

Contributors

anthonydahanne avatar dmikusa avatar ekcasey avatar modulo11 avatar nebhale avatar paketo-bot avatar pivotal-david-osullivan avatar twoseat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

java's Issues

No builldpack.toml found in java 10.7.0

I am using buildpack to build a springboot image

Our bootBuildImagetask is

tasks.bootBuildImage {
    buildpacks = listOf("gcr.io/paketo-buildpacks/java", "gcr.io/paketo-buildpacks/new-relic")
    bindings = listOf("$projectDir/src/main/buildpack/new-relic:/platform/bindings/new-relic:ro")
}

Since this mornig an error appeared

Building image 'docker.io/library/backendforfrontend:test'

 > Pulling builder image 'docker.io/paketobuildpacks/builder:base' ..................................................
 > Pulled builder image 'paketobuildpacks/builder@sha256:17ea21162ba8c7717d3ead3ee3836a368aced7f02f2e59658e52029bd6d149e7'
 > Pulling run image 'docker.io/paketobuildpacks/run:base-cnb' ..................................................
 > Pulled run image 'paketobuildpacks/run@sha256:1af9935d8987fd52b2266d288200c9482d1dd5529860bbf5bc2d248de1cb1a38'
 > Pulling buildpack image 'gcr.io/paketo-buildpacks/java:latest' ..................................................
 > Pulled buildpack image 'gcr.io/paketo-buildpacks/java@sha256:5b74c0946a6ef69a7d7ec2ff6bcff0d323bf0590ee67dfe7188db2cc1f2e1bff'
 > Pulling buildpack image 'gcr.io/paketo-buildpacks/new-relic:latest' ..................................................
 > Pulled buildpack image 'gcr.io/paketo-buildpacks/new-relic@sha256:cb598d744ed8efed765f5423c4ebfb72b8509d29092b5dca781748eff6f6cb0c'
 > Executing lifecycle version v0.16.5
 > Using build cache volume 'pack-cache-a2f8093d80fa.build'

 > Running creator
    [creator]     ===> ANALYZING
    [creator]     Image with name "docker.io/library/backendforfrontend:test" not found
    [creator]     ===> DETECTING
    [creator]     ERROR: failed to initialize detector: open /cnb/buildpacks/paketo-buildpacks_java/10.7.0/buildpack.toml: no such file or directory

> Task :bootBuildImage FAILED

FAILURE: Build failed with an exception.

unable to invoke layer creator - zip: not a valid zip file

What happened?

we cannot build and publish a spring-boot source-code, after the build stage being successful we get the we get the following error:

      [INFO] Starting audit...
      Audit done.
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time:  03:40 min
      [INFO] Finished at: 2021-11-30T13:25:04Z
      [INFO] ------------------------------------------------------------------------
        Removing source code
unable to invoke layer creator
unable to extract /layers/paketo-buildpacks_maven/application/application.zip
zip: not a valid zip file
ERROR: failed to build: exit status 1
ERROR: failed to build: executing lifecycle: failed with status code: 51
  • What were you attempting to do?
    build and publish a spring-boot repo via gitlabCICD Pipeline.

  • What did you expect to happen?
    the image to be built and published on our private docker hub.

  • What was the actual behavior? Please provide log output, if possible.

      [INFO] Starting audit...
      Audit done.
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time:  03:40 min
      [INFO] Finished at: 2021-11-30T13:25:04Z
      [INFO] ------------------------------------------------------------------------
        Removing source code
unable to invoke layer creator
unable to extract /layers/paketo-buildpacks_maven/application/application.zip
zip: not a valid zip file
ERROR: failed to build: exit status 1
ERROR: failed to build: executing lifecycle: failed with status code: 51

Build Configuration

pack build test:1 --builder gcr.io/paketo-buildpacks/builder:base -e BP_MAVEN_BUILD_ARGUMENTS="-B -s .m2/settings.xml -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 package" --volume /root/maven-binding:/platform/bindings/maven-settings --trust-builder

  • What platform (pack, kpack, tekton buildpacks plugin, etc.) are you
    using? Please include a version.
    pack version:0.22.0+git-26d8c5c.build-2970

  • What buildpacks are you using? Please include versions.

  • What builder are you using? If custom, can you provide the output from pack inspect-builder <builder>?
    paketo-buildpacks_maven

  • Can you provide a sample app or relevant configuration (buildpack.yml,
    nginx.conf, etc.)? No.

  • Docker version:

 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)
  scan: Docker Scan (Docker Inc., v0.9.0)

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 4
 Server Version: 20.10.11
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc version: v1.0.2-0-g52b36a2
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.11.0-40-generic
 Operating System: Ubuntu 20.04.3 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 15.22GiB
 Name: WSL391
 ID: 2C2X:ZUPP:SZFM:AJ6R:DZ3V:BWZG:NIP3:Z453:NH6C:PZN2:XAI6:L4TZ
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
  • Note:
    using Maven docker image or maven cli we are able to build the app successfully.

Checklist

  • I have included log output.
  • The log output includes an error message.
  • I have included steps for reproduction.

including newrelic buildpack

Describe the Enhancement

Can the newrelic buildpack be included in this java builder.

Motivation

This java builder seems to be including other application monitoring platforms (datadog, google stakedriver, azure application-insights), Including newrelic buildpack would make it useful for those who use the platform.

OpenJDK error with cgroups v2

OpenJDK cgroups v2 bug:
JDK-8283559

Expected Behaviour

OpenJDK should select SerialGC for 1 CPU.

Current Behavior

OpenJDK select G1GC which impacts performance.

Possible Solution

Upgrade to JDK 11.0.16 and other relevant versions mentioned in OpenJDK issue.

Java8 launch fails with fatal error for image built using 5.16.0

What happened?

  • What were you attempting to do?
    Launch an image built using 5.16.0

  • What did you expect to happen?
    I expected the Java app to start

  • What was the actual behavior? Please provide log output, if possible.
    Java launch fails with the following output:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f90f6ffe2f7, pid=1, tid=0x00007f90f8166700
#
# JRE version:  (8.0_302-b08) (build )
# Java VM: OpenJDK 64-Bit Server VM (25.302-b08 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0xb2a2f7]  VirtualMemoryTracker::add_reserved_region(unsigned char*, unsigned long, NativeCallStack const&, MemoryType, bool)+0x77
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /workspace/hs_err_pid1.log
#
# If you would like to submit a bug report, please visit:
#   https://bell-sw.com/support
#

[error occurred during error reporting , id 0xb]

Build Configuration

  • What platform (pack, kpack, tekton buildpacks plugin, etc.) are you
    using? Please include a version.

pack [0.20.0+git-66a4f32.build-2668] command executed on locally on macOS 11.6 and in CI on Ubuntu 18.04:

pack build "$dockerhub_snapshot_image" \
  --env BP_JVM_VERSION=8 \
  --buildpack paketo-buildpacks/java \
  --builder paketobuildpacks/builder:base \
  --path $jar_path
  • What buildpacks are you using? Please include versions.
    Using 5.15.0 image is built successfully and launches successfully.
    Using 5.16.0 image is built successfully but fails to start (with output shown above)

Validating stack mixins fails

When running pack on a spring boot project the pack build fails with ->
ERROR: failed to build: validating stack mixins: buildpack paketo-buildpacks/[email protected] does not support stack io.buildpacks.stacks.bionic

Command I ran ->
pack build foo --builder paketobuildpacks/builder:base --env BP_JVM_VERSION=17

ab4139a17886: Pulling fs layer7dcac8fa77a8: Download complete7dcac8fa77a8: Extracting7dcac8fa77a8: Extracting6b4dacd86a6b: Downloadingab4139a17886: 1MBDownloadingab4139a17886: 7kBDownloadingab4139a17886: Verifying Checksum Download complete7dcac8fa77a8: Pull complete6b4dacd86a6b: Downloading6b4dacd86a6b: Verifying Checksum Download complete
6b4dacd86a6b: Extracting6b4dacd86a6b: 1MBExtracting6b4dacd86a6b: 1MBExtracting6b4dacd86a6b: 1MBExtracting6b4dacd86a6b: 1MBExtracting 8.651MB/10.31MB
6b4dacd86a6b: Extracting6b4dacd86a6b: 1MBExtracting6b4dacd86a6b: 1MBExtracting6b4dacd86a6b: 1MBPull completeab4139a17886: Extractingab4139a17886: 7kBExtractingab4139a17886: 7kBPull completeDigest: sha256:8831f434dcee31c4f8b036948e7e116b65e6fcfdd87a2e8f479eeb5dd4a387ff
Status: Downloaded newer image for paketobuildpacks/run:base-cnb
ERROR: failed to build: validating stack mixins: buildpack paketo-buildpacks/[email protected] does not support stack io.buildpacks.stacks.bionic

Build JEE Image with Pack

I tried to create a image based on java buildpack. But it fails with the following error.

[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:10 min
[INFO] Finished at: 2020-11-02T13:10:10Z
[INFO] ------------------------------------------------------------------------
unable to invoke layer creator
unable to contribute application layer
unable to resolve artifact
unable to find single built artifact in target/*.[jw]ar, candidates: []
ERROR: failed to build: exit status 1
ERROR: failed to build: executing lifecycle: failed with status code: 145

Reproduction
Steps
download jee application from internal github
pack build espm-web --builder paketobuildpacks/builder:base

How to include `curl` when using builder:base?

What happened?

  • What were you attempting to do?
    I was trying to setup a docker health check against a Spring Boot application, using the default builder (base)

  • What did you expect to happen?
    I was expected curl or a similar utility to be available to query http://localhost:8080/actuator/health

  • What was the actual behavior? Please provide log output, if possible.

Build Configuration

  • What platform (pack, kpack, tekton buildpacks plugin, etc.) are you
    using? Please include a version.
    Using spring-boot-maven-plugin 2.4.3 and image builder: docker.io/paketobuildpacks/builder:base

Workaround

It works using image builder docker.io/paketobuildpacks/builder:full, but the image size grows from 334 MB to 931 MB.

curl could be included in the base stack as well as the full stack but some people might prefer to keep the base image as small as possible.

I guess having an optional buildpack contributing some utilities would be a better option?

Are there any other option?

Spring Boot Native Builds with bellsoft-liberica:9.9.0-ea crash since this morning with 403

Spring Boot 3.0 RC1 brought in Native Image Support requiring Graalvm 22.3.
The task that the spring boot initializer creates creates this gradle configuration:

buildpacks = ['gcr.io/paketo-buildpacks/bellsoft-liberica:9.9.0-ea', 'gcr.io/paketo-buildpacks/java-native-image']

Worked perfectly fine until this morning now it crashes with the exception below.
Clicking on the link inside the browser also yields to a 403.
Was this version removed ?

[creator] BellSoft Liberica NIK 17.0.5: Contributing to layer [creator] Downloading from https://download.bell-sw.com/vm/22.3.0/bellsoft-liberica-vm-core-openjdk17.0.5+8-22.3.0+1-ea-linux-amd64.tar.gz [creator] unable to invoke layer creator [creator] unable to get dependency native-image-svm [creator] unable to download https://download.bell-sw.com/vm/22.3.0/bellsoft-liberica-vm-core-openjdk17.0.5+8-22.3.0+1-ea-linux-amd64.tar.gz [creator] could not download https://download.bell-sw.com/vm/22.3.0/bellsoft-liberica-vm-core-openjdk17.0.5+8-22.3.0+1-ea-linux-amd64.tar.gz: 403 [creator] ERROR: failed to build: exit status 1

Implement RFC0044: Disable SBOM

Describe the Enhancement

This buildpack should opt-in to allowing users to disable SBOM generation. In doing so, it should conform to RFC044.

When BP_DISABLE_SBOM is set to true, buildpacks that allow SBOM to be omitted from their output should refrain from generating or attaching an SBOM in their outputs. This would apply to both new (Syft, CycloneDX, and SPDX formats) and old (label) SBOM outputs.

Additionally, when this variable is set to true a buildpack should set an image label of io.paketo.sbom.disabled to true. This label interface would allow downstream consumers of the image to understand that SBOM generation had been explicitly disabled.

Possible Solution

Motivation

SBOM generation can take substantial time. There may also be other reasons for wanting this functionality to be disabled.

When BP_JVM_VERSION is 21, the workspace owner has a problem.

Expected Behavior

The owner of the workspace and the �sub directories is cnb

Current Behavior

image

The owner of the workspace and the sub directories is 1001.
but, if BP_JVM_VERSION is 17, cnb

Steps to Reproduce

bootBuildImage {
    imageName.set(System.getenv("IMAGE"))

    buildpacks.set(listOf(
        "urn:cnb:builder:paketo-buildpacks/java"
    ))

    val profile = "${System.getProperties()["spring.profiles.active"]}"

    environment.set(
        mapOf(
            "BP_JVM_VERSION" to "17",
            "BPE_DELIM_JAVA_TOOL_OPTIONS" to " ",
            "BP_DATADOG_ENABLED" to "true",
            "BPE_SPRING_PROFILES_ACTIVE" to profile,
            "BPE_DD_VERSION" to Constant.VERSION,
            "BPE_LANG" to "en_US.utf8",
        )
    )

    buildCache {
        volume {
            name.set("cache-${rootProject.name}.build")
        }
    }
}

Motivations

Support Structured Log Format

Would be great to support JSON format for logs generated during startup.

Describe the Enhancement

As is a common practice, we configured all containers to spit out logs in JSON format. However for Java (Spring Boot) application, during startup there's a few lines that are not managed by the application:

Setting Active Processor Count to 2
Calculated JVM Memory Configuration: -XX:MaxDirectMemorySize=10M -Xmx1643814K -XX:MaxMetaspaceSize=146137K -XX:ReservedCodeCacheSize=240M -Xss1M (Total Memory: 2G, Thread Count: 50, Loaded Class Count: 23387, Headroom: 0%)
Enabling Java Native Memory Tracking
Adding 124 container CA certificates to JVM truststore
Spring Cloud Bindings Enabled
Picked up JAVA_TOOL_OPTIONS: -Djava.security.properties=/layers/paketo-buildpacks_bellsoft-liberica/java-security-properties/java-security.properties -XX:+ExitOnOutOfMemoryError -XX:ActiveProcessorCount=2 -XX:MaxDirectMemorySize=10M -Xmx1643814K -XX:MaxMetaspaceSize=146137K -XX:ReservedCodeCacheSize=240M -Xss1M -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=summary -XX:+PrintNMTStatistics -Dorg.springframework.cloud.bindings.boot.enable=true

Ideally it would be nice to let the user to configure the container to spit the above logs in JSON format.

Possible Solution

If this is not possible, another alternative would be to let the user to turn them off (if they're just info) and leave warn and error messages on.

Motivation

Simpler log aggregator configuration.

Java Buildpack 10.2.0 Error

Expected Behavior

Hello

I am using maven to build my container using this version gcr.io/paketo-buildpacks/java:10.2.0

Configuration Example:

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<mainClass>org.terrakube.executor.ExecutorApplication</mainClass>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
					<image>
					    <builder>paketobuildpacks/builder-jammy-base</builder>
                    	<buildpacks>
                        	<buildpack>gcr.io/paketo-buildpacks/java:10.2.0</buildpack>
                        	<buildpack>gcr.io/paketo-buildpacks/opentelemetry</buildpack>
                    	</buildpacks>
                    	<bindings>
                        	<binding>${basedir}/../bindings/ca-certificates:/platform/bindings/ca-certificates</binding>
                    	</bindings>
                    <env>
                        <BP_OPENTELEMETRY_ENABLED>true</BP_OPENTELEMETRY_ENABLED>
                    </env>
                	</image>
				</configuration>
				<executions>
                    <execution>
                        <goals>
                            <goal>build-image</goal>
                        </goals>
                    </execution>
                </executions>
			</plugin>
		</plugins>
	</build>

When I am running the build mvn spring-boot:build-image I am getting the following error:

[INFO] Building image 'docker.io/library/executor:2.17.0'
[INFO] 
[INFO]  > Pulling builder image 'docker.io/paketobuildpacks/builder-jammy-base:latest' 100%
[INFO]  > Pulled builder image 'paketobuildpacks/builder-jammy-base@sha256:dc16b1c4886708d2276c8aa30768825910c9dc633af37e8e42d07cb4b8cd3ac9'
[INFO]  > Pulling run image 'docker.io/paketobuildpacks/run-jammy-base:latest' 100%
[INFO]  > Pulled run image 'paketobuildpacks/run-jammy-base@sha256:09e2994c01af50cc48d6f55f08f0977a91d245f8483f6e41e8552cc41e5e5981'
[INFO]  > Pulling buildpack image 'gcr.io/paketo-buildpacks/java:10.2.0' 100%
[INFO]  > Pulled buildpack image 'gcr.io/paketo-buildpacks/java@sha256:801ca8f621b697a1ccd6cfc24cff5d144c078170d399c174d3ee5a4f87fd6626'
[INFO]  > Pulling buildpack image 'gcr.io/paketo-buildpacks/opentelemetry:latest' 100%
[INFO]  > Pulled buildpack image 'gcr.io/paketo-buildpacks/opentelemetry@sha256:474cefc5e5149ea9d2d84b4dd56d1d2f9e79efacb56af7d17f5467b05746c46b'
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  15.386 s
[INFO] Finished at: 2023-10-13T15:02:58-06:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.7.15:build-image (default) on project executor: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:2.7.15:build-image failed: Invalid response received when loading image "pack.local/builder/arftfgpecq:latest" 
Invalid response received when loading image "pack.local/builder/arftfgpecq:latest" 

If I change the configuration to use 10.1.0 the image is generated successfully, I noticed 10.2.0 was released a couple of hours ago so maybe it could be a bug with the latest release.

Current Behavior

Possible Solution

Rollback to 10.1.0

Steps to Reproduce

  1. Build a container using mvn spring-boot:build-image using version 10.2.0

Motivations

Metadata / labels document and cleanup?

I'm trying to make use of the metadata produced by the buildpacks in the labels of the image that it produces.

I presume that it is possible to obtain information such as whether a given dependency/jar was included in the image and if so what version. This is definitely useful information and I want to know it!

However...

  1. the format of the metadata needs to be clearly documented so that potential consumers of the data can
    a) understand how to parse the data
    b) rely on this parsing / format / structure to remain stable in the future (i.e. the documentation of the metadata format is to represent a contract of sorts that consumers of the data can rely on.

  2. I think there may be a bit too much metadata being attached. I think this because when I use 'docker inspect' on a buildpacked container the result is a file large enough to break some editors. The file I have is 500k in size. Granted, this is 'manageble' if handled with care, but parsing that data is still costly (memory and CPU). And some tools cannot handle it at all, for example gedit linux text editor freezes up as soon as I try to search for text in this file). So I question whether all this data is really needed/useful. (Hard to say now as I don't fully understand yet what is actually there. Some of it though seems to be the complete textual documentation for spring boot metadata properties, I think we probably do not really need all that documentation embedded in the metadata).

Request to Update Bellsoft Liberica Buildpacks to 9.4.2 as default

Currently the default version of the default JVM , paketo-buildpacks/bellsoft-liberica:9.4.1 is using jdk version 1.8.0.342-7 for java 8 which has been identified to have various critical vulnerabilities. Request to bump up the version of liberica buildpacks to 9.4.2 which has a fix for this by including the new version 1.8.0.345 which addresses the vulnerabilities.

Expected Behavior

The Java buildpacks should by default pull bellsoft-liberica buildpacks version 9.4.2.

Current Behavior

The latest release of java buildpacks are using version 9.4.1 version of bellsoft-liberica buildpacks by default

Possible Solution

Needed a new release that includes the latest version of the bellsoft-liberica buildpacks ( 9.4.2)

Source with gradle and maven build systems fails

What happened?

  • Spring PetClinic has long had a maven build, recently a gradle build was added.

  • Using the latest tiny paketo builder, both the gradle and maven buildpacks detect. The gradle buildpacks runs, removes the source code, then the maven buildpacks fails running because it's unable to find a pom.xml

pack build scothis/petclinic
tiny: Pulling from paketobuildpacks/builder
Digest: sha256:9e6c4115045415035bb4eb356cb92b2f204bb2c6313e57d829907d30f0e1d390
Status: Image is up to date for paketobuildpacks/builder:tiny
tiny-cnb: Pulling from paketobuildpacks/run
Digest: sha256:1437105c9653b935ffba12ef35400ce7868e80465778759255a0da268fd7f1f2
Status: Image is up to date for paketobuildpacks/run:tiny-cnb
===> ANALYZING
Previous image with name "scothis/petclinic" not found
===> DETECTING
9 of 19 buildpacks participating
paketo-buildpacks/ca-certificates   3.0.1
paketo-buildpacks/bellsoft-liberica 9.0.1
paketo-buildpacks/syft              1.3.0
paketo-buildpacks/gradle            6.0.1
paketo-buildpacks/maven             6.0.1
paketo-buildpacks/executable-jar    6.0.1
paketo-buildpacks/apache-tomcat     7.0.2
paketo-buildpacks/dist-zip          5.0.1
paketo-buildpacks/spring-boot       5.2.0
===> RESTORING
===> BUILDING

Paketo CA Certificates Buildpack 3.0.1
  https://github.com/paketo-buildpacks/ca-certificates
  Launch Helper: Contributing to layer
    Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper

Paketo BellSoft Liberica Buildpack 9.0.1
  https://github.com/paketo-buildpacks/bellsoft-liberica
  Build Configuration:
    $BP_JVM_TYPE                 JRE             the JVM type - JDK or JRE
    $BP_JVM_VERSION              11              the Java version
  Launch Configuration:
    $BPL_DEBUG_ENABLED           false           enables Java remote debugging support
    $BPL_DEBUG_PORT              8000            configure the remote debugging port
    $BPL_DEBUG_SUSPEND           false           configure whether to suspend execution until a debugger has attached
    $BPL_HEAP_DUMP_PATH                          write heap dumps on error to this path
    $BPL_JAVA_NMT_ENABLED        true            enables Java Native Memory Tracking (NMT)
    $BPL_JAVA_NMT_LEVEL          summary         configure level of NMT, summary or detail
    $BPL_JFR_ARGS                                configure custom Java Flight Recording (JFR) arguments
    $BPL_JFR_ENABLED             false           enables Java Flight Recording (JFR)
    $BPL_JMX_ENABLED             false           enables Java Management Extensions (JMX)
    $BPL_JMX_PORT                5000            configure the JMX port
    $BPL_JVM_HEAD_ROOM           0               the headroom in memory calculation
    $BPL_JVM_LOADED_CLASS_COUNT  35% of classes  the number of loaded classes in memory calculation
    $BPL_JVM_THREAD_COUNT        250             the number of threads in memory calculation
    $JAVA_TOOL_OPTIONS                           the JVM launch flags
  BellSoft Liberica JDK 11.0.13: Contributing to layer
    Downloading from https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-linux-amd64.tar.gz
    Verifying checksum
    Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jdk
    Adding 128 container CA certificates to JVM truststore
    Writing env.build/JAVA_HOME.override
    Writing env.build/JDK_HOME.override
  BellSoft Liberica JRE 11.0.13: Contributing to layer
    Downloading from https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jre11.0.13+8-linux-amd64.tar.gz
    Verifying checksum
    Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
    Adding 128 container CA certificates to JVM truststore
    Writing env.launch/BPI_APPLICATION_PATH.default
    Writing env.launch/BPI_JVM_CACERTS.default
    Writing env.launch/BPI_JVM_CLASS_COUNT.default
    Writing env.launch/BPI_JVM_SECURITY_PROVIDERS.default
    Writing env.launch/JAVA_HOME.default
    Writing env.launch/JAVA_TOOL_OPTIONS.append
    Writing env.launch/JAVA_TOOL_OPTIONS.delim
    Writing env.launch/MALLOC_ARENA_MAX.default
  Launch Helper: Contributing to layer
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/active-processor-count
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/java-opts
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jvm-heap
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/link-local-dns
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/memory-calculator
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/openssl-certificate-loader
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-configurer
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jmx
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jfr
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/nmt
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-classpath-9
    Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/debug-9
  Java Security Properties: Contributing to layer
    Writing env.launch/JAVA_SECURITY_PROPERTIES.default
    Writing env.launch/JAVA_TOOL_OPTIONS.append
    Writing env.launch/JAVA_TOOL_OPTIONS.delim

Paketo Syft Buildpack 1.3.0
  https://github.com/paketo-buildpacks/syft
    Downloading from https://github.com/anchore/syft/releases/download/v0.33.0/syft_0.33.0_linux_amd64.tar.gz
    Verifying checksum
    Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default

Paketo Gradle Buildpack 6.0.1
  https://github.com/paketo-buildpacks/gradle
  Build Configuration:
    $BP_GRADLE_BUILD_ARGUMENTS  --no-daemon assemble  the arguments to pass to Gradle
    $BP_GRADLE_BUILT_ARTIFACT   build/libs/*.[jw]ar   the built application artifact explicitly.  Supersedes $BP_GRADLE_BUILT_MODULE
    $BP_GRADLE_BUILT_MODULE                           the module to find application artifact in
    Creating cache directory /home/cnb/.gradle
  Compiled Application: Contributing to layer
    Executing gradlew --no-daemon assemble
      Downloading https://services.gradle.org/distributions/gradle-7.3.1-bin.zip
      ...........10%...........20%...........30%...........40%...........50%...........60%...........70%...........80%...........90%...........100%
      
      Welcome to Gradle 7.3.1!
      
      Here are the highlights of this release:
       - Easily declare new test suites in Java projects
       - Support for Java 17
       - Support for Scala 3
      
      For more details see https://docs.gradle.org/7.3.1/release-notes.html
      
      To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.3.1/userguide/gradle_daemon.html#sec:disabling_the_daemon.
      Daemon will be stopped at the end of the build 
      > Task :compileJava
      > Task :processResources
      > Task :classes
      > Task :bootJarMainClassName
      > Task :bootJar
      > Task :jar
      > Task :assemble
      
      BUILD SUCCESSFUL in 2m 1s
      5 actionable tasks: 5 executed
  Removing source code

Paketo Maven Buildpack 6.0.1
  https://github.com/paketo-buildpacks/maven
  Build Configuration:
    $BP_MAVEN_BUILD_ARGUMENTS  -Dmaven.test.skip=true package  the arguments to pass to Maven
    $BP_MAVEN_BUILT_ARTIFACT   target/*.[ejw]ar                the built application artifact explicitly.  Supersedes $BP_MAVEN_BUILT_MODULE
    $BP_MAVEN_BUILT_MODULE                                     the module to find application artifact in
    $BP_MAVEN_POM_FILE         pom.xml                         the location of the main pom.xml file, relative to the application root
  Apache Maven 3.8.4: Contributing to layer
    Downloading from https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.tar.gz
    Verifying checksum
    Expanding to /layers/paketo-buildpacks_maven/maven
    Creating cache directory /home/cnb/.m2
  Compiled Application: Contributing to layer
    Executing mvn --batch-mode -Dmaven.test.skip=true package
      [INFO] Scanning for projects...
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD FAILURE
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time:  0.320 s
      [INFO] Finished at: 2021-12-21T17:18:20Z
      [INFO] ------------------------------------------------------------------------
      [ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/workspace). Please verify you invoked Maven from the correct directory. -> [Help 1]
      [ERROR] 
      [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
      [ERROR] Re-run Maven using the -X switch to enable full debug logging.
      [ERROR] 
      [ERROR] For more information about the errors and possible solutions, please read the following articles:
      [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MissingProjectException
      unable to invoke layer creator
unable to contribute application layer
error running build
exit status 1
ERROR: failed to build: exit status 1
ERROR: failed to build: executing lifecycle: failed with status code: 51

Build Configuration

Inspecting default builder: 'paketobuildpacks/builder:tiny'

Description: Tiny base image (bionic build image, distroless-like run image) with buildpacks for Java, Java Native Image and Go

Created By:
  Name: Pack CLI
  Version: 0.23.0+git-0db2c77.build-3056

Trusted: Yes

Stack:
  ID: io.paketo.stacks.tiny

Lifecycle:
  Version: 0.13.2
  Buildpack APIs:
    Deprecated: (none)
    Supported: 0.2, 0.3, 0.4, 0.5, 0.6, 0.7
  Platform APIs:
    Deprecated: (none)
    Supported: 0.3, 0.4, 0.5, 0.6, 0.7, 0.8

Run Images:
  index.docker.io/paketobuildpacks/run:tiny-cnb
  gcr.io/paketo-buildpacks/run:tiny-cnb

Buildpacks:
  ID                                                  NAME                                               VERSION        HOMEPAGE
  paketo-buildpacks/apache-tomcat                     Paketo Apache Tomcat Buildpack                     7.0.2          https://github.com/paketo-buildpacks/apache-tomcat
  paketo-buildpacks/azure-application-insights        Paketo Azure Application Insights Buildpack        5.1.1          https://github.com/paketo-buildpacks/azure-application-insights
  paketo-buildpacks/bellsoft-liberica                 Paketo BellSoft Liberica Buildpack                 9.0.1          https://github.com/paketo-buildpacks/bellsoft-liberica
  paketo-buildpacks/ca-certificates                   Paketo CA Certificates Buildpack                   3.0.1          https://github.com/paketo-buildpacks/ca-certificates
  paketo-buildpacks/clojure-tools                     Paketo Clojure Tools Buildpack                     2.0.1          https://github.com/paketo-buildpacks/clojure-tools
  paketo-buildpacks/dep                               Paketo Dep Buildpack                               0.2.0          https://github.com/paketo-buildpacks/dep
  paketo-buildpacks/dep-ensure                        Paketo Dep Ensure Buildpack                        0.2.0          https://github.com/paketo-buildpacks/dep-ensure
  paketo-buildpacks/dist-zip                          Paketo DistZip Buildpack                           5.0.1          https://github.com/paketo-buildpacks/dist-zip
  paketo-buildpacks/encrypt-at-rest                   Paketo Encrypt-at-Rest Buildpack                   4.0.1          https://github.com/paketo-buildpacks/encrypt-at-rest
  paketo-buildpacks/environment-variables             Paketo Environment Variables Buildpack             4.0.1          https://github.com/paketo-buildpacks/environment-variables
  paketo-buildpacks/executable-jar                    Paketo Executable JAR Buildpack                    6.0.1          https://github.com/paketo-buildpacks/executable-jar
  paketo-buildpacks/go                                Paketo Go Buildpack                                0.13.1         https://github.com/paketo-buildpacks/go
  paketo-buildpacks/go-build                          Paketo Go Build Buildpack                          0.6.0          https://github.com/paketo-buildpacks/go-build
  paketo-buildpacks/go-dist                           Paketo Go Distribution Buildpack                   0.8.2          https://github.com/paketo-buildpacks/go-dist
  paketo-buildpacks/go-mod-vendor                     Paketo Go Mod Vendor Buildpack                     0.4.0          https://github.com/paketo-buildpacks/go-mod-vendor
  paketo-buildpacks/google-stackdriver                Paketo Google Stackdriver Buildpack                5.1.1          https://github.com/paketo-buildpacks/google-stackdriver
  paketo-buildpacks/gradle                            Paketo Gradle Buildpack                            6.0.1          https://github.com/paketo-buildpacks/gradle
  paketo-buildpacks/image-labels                      Paketo Image Labels Buildpack                      4.0.1          https://github.com/paketo-buildpacks/image-labels
  paketo-buildpacks/java                              Paketo Java Buildpack                              6.3.0          https://github.com/paketo-buildpacks/java
  paketo-buildpacks/java-native-image                 Paketo Java Native Image Buildpack                 7.3.0          https://github.com/paketo-buildpacks/java-native-image
  paketo-buildpacks/leiningen                         Paketo Leiningen Buildpack                         4.0.1          https://github.com/paketo-buildpacks/leiningen
  paketo-buildpacks/maven                             Paketo Maven Buildpack                             6.0.1          https://github.com/paketo-buildpacks/maven
  paketo-buildpacks/native-image                      Paketo Native Image Buildpack                      5.0.1          https://github.com/paketo-buildpacks/native-image
  paketo-buildpacks/procfile                          Paketo Procfile Buildpack                          5.0.1          https://github.com/paketo-buildpacks/procfile
  paketo-buildpacks/sbt                               Paketo SBT Buildpack                               6.0.3          https://github.com/paketo-buildpacks/sbt
  paketo-buildpacks/spring-boot                       Paketo Spring Boot Buildpack                       5.2.0          https://github.com/paketo-buildpacks/spring-boot
  paketo-buildpacks/syft                              Paketo Syft Buildpack                              1.3.0          https://github.com/paketo-buildpacks/syft
  paketo-buildpacks/upx                               Paketo UPX Buildpack                               3.0.0          https://github.com/paketo-buildpacks/upx
  paketo-buildpacks/watchexec                         Paketo Watchexec Buildpack                         2.0.1          https://github.com/paketo-buildpacks/watchexec

Detection Order:
 ├ Group #1:
 │  └ paketo-buildpacks/[email protected]
 │     └ Group #1:
 │        ├ paketo-buildpacks/[email protected]          (optional)
 │        ├ paketo-buildpacks/[email protected]                      (optional)
 │        ├ paketo-buildpacks/[email protected]
 │        ├ paketo-buildpacks/[email protected]                     (optional)
 │        ├ paketo-buildpacks/[email protected]                (optional)
 │        ├ paketo-buildpacks/[email protected]                   (optional)
 │        ├ paketo-buildpacks/[email protected]                    (optional)
 │        ├ paketo-buildpacks/[email protected]                      (optional)
 │        ├ paketo-buildpacks/[email protected]           (optional)
 │        ├ paketo-buildpacks/[email protected]              (optional)
 │        ├ paketo-buildpacks/[email protected]
 │        ├ paketo-buildpacks/[email protected]                 (optional)
 │        ├ paketo-buildpacks/[email protected]    (optional)
 │        └ paketo-buildpacks/[email protected]             (optional)
 ├ Group #2:
 │  └ paketo-buildpacks/[email protected]
 │     └ Group #1:
 │        ├ paketo-buildpacks/[email protected]               (optional)
 │        ├ paketo-buildpacks/[email protected]
 │        ├ paketo-buildpacks/[email protected]                          (optional)
 │        ├ paketo-buildpacks/[email protected]                     (optional)
 │        ├ paketo-buildpacks/[email protected]                 (optional)
 │        ├ paketo-buildpacks/[email protected]                        (optional)
 │        ├ paketo-buildpacks/[email protected]                         (optional)
 │        ├ paketo-buildpacks/[email protected]                           (optional)
 │        ├ paketo-buildpacks/[email protected]                     (optional)
 │        ├ paketo-buildpacks/[email protected]                (optional)
 │        ├ paketo-buildpacks/[email protected]                 (optional)
 │        ├ paketo-buildpacks/[email protected]                      (optional)
 │        ├ paketo-buildpacks/[email protected]                   (optional)
 │        ├ paketo-buildpacks/[email protected]                      (optional)
 │        ├ paketo-buildpacks/[email protected]    (optional)
 │        ├ paketo-buildpacks/[email protected]            (optional)
 │        ├ paketo-buildpacks/[email protected]               (optional)
 │        ├ paketo-buildpacks/[email protected]         (optional)
 │        └ paketo-buildpacks/[email protected]                  (optional)
 ├ Group #3:
 │  ├ paketo-buildpacks/[email protected]
 │  │  └ Group #1:
 │  │     ├ paketo-buildpacks/[email protected]          (optional)
 │  │     ├ paketo-buildpacks/[email protected]                (optional)
 │  │     ├ paketo-buildpacks/[email protected]
 │  │     ├ paketo-buildpacks/[email protected]
 │  │     ├ paketo-buildpacks/[email protected]
 │  │     ├ paketo-buildpacks/[email protected]                 (optional)
 │  │     ├ paketo-buildpacks/[email protected]    (optional)
 │  │     └ paketo-buildpacks/[email protected]             (optional)
 │  ├ paketo-buildpacks/[email protected]
 │  │  └ Group #2:
 │  │     ├ paketo-buildpacks/[email protected]          (optional)
 │  │     ├ paketo-buildpacks/[email protected]                (optional)
 │  │     ├ paketo-buildpacks/[email protected]
 │  │     ├ paketo-buildpacks/[email protected]
 │  │     ├ paketo-buildpacks/[email protected]
 │  │     ├ paketo-buildpacks/[email protected]
 │  │     ├ paketo-buildpacks/[email protected]                 (optional)
 │  │     ├ paketo-buildpacks/[email protected]    (optional)
 │  │     └ paketo-buildpacks/[email protected]             (optional)
 │  └ paketo-buildpacks/[email protected]
 │     └ Group #3:
 │        ├ paketo-buildpacks/[email protected]          (optional)
 │        ├ paketo-buildpacks/[email protected]                (optional)
 │        ├ paketo-buildpacks/[email protected]
 │        ├ paketo-buildpacks/[email protected]
 │        ├ paketo-buildpacks/[email protected]                 (optional)
 │        ├ paketo-buildpacks/[email protected]    (optional)
 │        └ paketo-buildpacks/[email protected]             (optional)
 └ Group #4:
    └ paketo-buildpacks/[email protected]

Checklist

  • I have included log output.
  • The log output includes an error message.
  • I have included steps for reproduction.

Migrate docs into a Hugo module

In order to locate Paketo documentation closer to the code it documents, we can migrate the docs for this language family from where they currently live in the paketo website repo into a Hugo module that sits inside this repository.

For an example of this, see the Hugo module that sits inside the Paketo Dotnet Core language family repo.

To do this successfully, we need

  • A workflow that automatically tags a release of the docs module when a release is cut on this language family repo. There's an example of this in this PR to the centralized Paketo github-config repository
  • A Hugo module inside this language family repo (This module needs to have the name github.com/paketo-buildpacks/<name of this repo>/docs in order for the existing automation to work properly.) It should have the same structure as the Hugo module inside the dotnet-core repo.
  • An additional entry in the go.mod of the paketo-website repo for this repo's docs module
  • An additional [[module.imports.mounts]]in the paketo-website repo's hugo config.toml that mounts the content in this repo's docs module into the proper path in the site's directory structure. That path should match the path to the existing docs file in that repo (Hint: The docs file is probably in here).

produced image for java application is not jvmkill killable

What happened?

An image for a spring boot application v2.4.3 built with the default docker.io/paketobuildpacks/builder:base builder and docker.io/paketobuildpacks/run:base-cnb run image, adds the jvmkill layer providing the corresponding jvm args properly but the entrypoint runs the application as PID 1 making it unkillable by jvmkill.

  • What were you attempting to do?
    Running the image in Kubernetes 1.19, AWS EKS to be exact.

  • What did you expect to happen?
    When a java OutOfMemory occurs, jvmkill kicks in and kills the jvm.
    I expect that any layer included by buildpack works properly in conjunction with any other layers to not break any of the features, in this case jvmkill.

  • What was the actual behavior? Please provide log output, if possible.
    jvmkill kicks in and tries to kill the jvm failing silently.

we can see that prints the heap dump and submits the kill signal

Heap                                                                                                                                                                                 
  def new generation   total 116736K, used 90606K [0x00000000e8400000, 0x00000000f02a0000, 0x00000000f02a0000)                                                                        
   eden space 103808K,  87% used [0x00000000e8400000, 0x00000000edc7bae0, 0x00000000ee960000)                                                                                         
   from space 12928K,   0% used [0x00000000ef600000, 0x00000000ef600000, 0x00000000f02a0000)                                                                                          
   to   space 12928K,   0% used [0x00000000ee960000, 0x00000000ee960000, 0x00000000ef600000)                                                                                          
  tenured generation   total 259456K, used 249951K [0x00000000f02a0000, 0x0000000100000000, 0x0000000100000000)                                                                       
    the space 259456K,  96% used [0x00000000f02a0000, 0x00000000ff6b7f18, 0x00000000ff6b8000, 0x0000000100000000)                                                                     
  Metaspace       used 74292K, capacity 76000K, committed 76824K, reserved 208160K                                                                                                    
   class space    used 8689K, capacity 9350K, committed 9600K, reserved 140576K                                                                                                       
 jvmkill killing current process   

Not showing any error but not killing the jvm process either.

The jvm is running with PID 1, which is unkillable from inside the container:

cnb@myhost-6968d47f4b-2cnlj:/$ ps -fea
UID        PID  PPID  C STIME TTY          TIME CMD
cnb          1     0  6 19:49 ?        00:00:54 java org.springframework.boot.loader.JarLauncher
cnb        121     0  0 20:02 pts/0    00:00:00 bash
cnb        131   121  0 20:02 pts/0    00:00:00 ps -fea

Build Configuration

I am using the image builder included with the Spring Boot Gradle plugin v2.4.3
with the default bootBuildImage task, no additional configurations

> Task :myapp:bootBuildImage

Building image 'myapp:0.1.0'

 > Pulling builder image 'docker.io/paketobuildpacks/builder:base' ..................................................
 > Pulled builder image 'paketobuildpacks/builder@sha256:3e2ee17348bd901e7e0748e0e1ddccdf8a602b624e418927145b5f84ca26f264'
 > Pulling run image 'docker.io/paketobuildpacks/run:base-cnb' ..................................................
 > Pulled run image 'paketobuildpacks/run@sha256:b6b1612ab2dfa294514fff2750e8d724287f81e89d5e91209dbdd562ed7f7daf'
 > Executing lifecycle version v0.11.3
 > Using build cache volume 'pack-cache-183160ca51d4.build'

 > Running creator
    [creator]     ===> DETECTING
    [creator]     7 of 18 buildpacks participating
    [creator]     paketo-buildpacks/ca-certificates       2.2.0
    [creator]     paketo-buildpacks/bellsoft-liberica     8.0.0
    [creator]     paketo-buildpacks/executable-jar        5.0.0
    [creator]     paketo-buildpacks/dist-zip              4.0.0
    [creator]     paketo-buildpacks/spring-boot           4.3.0
    [creator]     ===> ANALYZING
    [creator]     Previous image with name "myapp:0.1.0" not found
    [creator]     ===> RESTORING
    [creator]     ===> BUILDING
    [creator]     
    [creator]     Paketo CA Certificates Buildpack 2.2.0
    [creator]       https://github.com/paketo-buildpacks/ca-certificates
    [creator]       Launch Helper: Contributing to layer
    [creator]         Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
    [creator]     
    [creator]     Paketo BellSoft Liberica Buildpack 8.0.0
    [creator]       https://github.com/paketo-buildpacks/bellsoft-liberica
    [creator]       Build Configuration:
    [creator]         $BP_JVM_VERSION              11.*            the Java version
    [creator]       Launch Configuration:
    [creator]         $BPL_JVM_HEAD_ROOM           0               the headroom in memory calculation
    [creator]         $BPL_JVM_LOADED_CLASS_COUNT  35% of classes  the number of loaded classes in memory calculation
    [creator]         $BPL_JVM_THREAD_COUNT        250             the number of threads in memory calculation
    [creator]         $JAVA_TOOL_OPTIONS                           the JVM launch flags
    [creator]       BellSoft Liberica JRE 11.0.11: Contributing to layer
    [creator]         Downloading from https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jre11.0.11+9-linux-amd64.tar.gz
    [creator]         Verifying checksum
    [creator]         Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
    [creator]         Adding 129 container CA certificates to JVM truststore
    [creator]         Writing env.launch/BPI_APPLICATION_PATH.default
    [creator]         Writing env.launch/BPI_JVM_CACERTS.default
    [creator]         Writing env.launch/BPI_JVM_CLASS_COUNT.default
    [creator]         Writing env.launch/BPI_JVM_SECURITY_PROVIDERS.default
    [creator]         Writing env.launch/JAVA_HOME.default
    [creator]         Writing env.launch/MALLOC_ARENA_MAX.default
    [creator]       Launch Helper: Contributing to layer
    [creator]         Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/active-processor-count
    [creator]         Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/java-opts
    [creator]         Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/link-local-dns
    [creator]         Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/memory-calculator
    [creator]         Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/openssl-certificate-loader
    [creator]         Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-configurer
    [creator]         Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-classpath-9
    [creator]       JVMKill Agent 1.16.0: Contributing to layer
    [creator]         Downloading from https://github.com/cloudfoundry/jvmkill/releases/download/v1.16.0.RELEASE/jvmkill-1.16.0-RELEASE.so
    [creator]         Verifying checksum
    [creator]         Copying to /layers/paketo-buildpacks_bellsoft-liberica/jvmkill
    [creator]         Writing env.launch/JAVA_TOOL_OPTIONS.append
    [creator]         Writing env.launch/JAVA_TOOL_OPTIONS.delim
    [creator]       Java Security Properties: Contributing to layer
    [creator]         Writing env.launch/JAVA_SECURITY_PROPERTIES.default
    [creator]         Writing env.launch/JAVA_TOOL_OPTIONS.append
    [creator]         Writing env.launch/JAVA_TOOL_OPTIONS.delim
    [creator]     
    [creator]     Paketo Executable JAR Buildpack 5.0.0
    [creator]       https://github.com/paketo-buildpacks/executable-jar
    [creator]       Class Path: Contributing to layer
    [creator]         Writing env/CLASSPATH.delim
    [creator]         Writing env/CLASSPATH.prepend
    [creator]       Process types:
    [creator]         executable-jar: java org.springframework.boot.loader.JarLauncher (direct)
    [creator]         task:           java org.springframework.boot.loader.JarLauncher (direct)
    [creator]         web:            java org.springframework.boot.loader.JarLauncher (direct)
    [creator]     
    [creator]     Paketo Spring Boot Buildpack 4.3.0
    [creator]       https://github.com/paketo-buildpacks/spring-boot
    [creator]       Creating slices from layers index
    [creator]         dependencies
    [creator]         spring-boot-loader
    [creator]         snapshot-dependencies
    [creator]         application
    [creator]       Launch Helper: Contributing to layer
    [creator]         Creating /layers/paketo-buildpacks_spring-boot/helper/exec.d/spring-cloud-bindings
    [creator]       Spring Cloud Bindings 1.7.1: Contributing to layer
    [creator]         Downloading from https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.7.1/spring-cloud-bindings-1.7.1.jar
    [creator]         Verifying checksum
    [creator]         Copying to /layers/paketo-buildpacks_spring-boot/spring-cloud-bindings
    [creator]       Web Application Type: Contributing to layer
    [creator]         Servlet web application detected
    [creator]         Writing env.launch/BPL_JVM_THREAD_COUNT.default
    [creator]       4 application slices
    [creator]       Image labels:
    [creator]         org.springframework.boot.version
    [creator]
    [creator]     ===> EXPORTING
    [creator]     Adding layer 'paketo-buildpacks/ca-certificates:helper'
    [creator]     Adding layer 'paketo-buildpacks/bellsoft-liberica:helper'
    [creator]     Adding layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
    [creator]     Adding layer 'paketo-buildpacks/bellsoft-liberica:jre'
    [creator]     Adding layer 'paketo-buildpacks/bellsoft-liberica:jvmkill'
    [creator]     Adding layer 'paketo-buildpacks/executable-jar:classpath'
    [creator]     Adding layer 'paketo-buildpacks/spring-boot:helper'
    [creator]     Adding layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
    [creator]     Adding layer 'paketo-buildpacks/spring-boot:web-application-type'
    [creator]     Adding 5/5 app layer(s)
    [creator]     Adding layer 'launcher'
    [creator]     Adding layer 'config'
    [creator]     Adding layer 'process-types'
    [creator]     Adding label 'io.buildpacks.lifecycle.metadata'
    [creator]     Adding label 'io.buildpacks.build.metadata'
    [creator]     Adding label 'io.buildpacks.project.metadata'
    [creator]     Adding label 'org.springframework.boot.version'
    [creator]     Setting default process type 'web'
    [creator]     Saving myapp:0.1.0...
    [creator]     *** Images (468bbb6776a7):
    [creator]           myapp:0.1.0

Add custom folders during paketo build

[note: as requested by https://github.com/paketo-buildpacks/base-builder/issues/484]
I am using paketo build packs with Spring Boot for Native Container Images + Maven.
And because of some limitations of flyway, I have the requirement to add an additional directory with content to the image.
JIb has a property "extraDirectories" to achieve this.
But diving into paketos documentation i could not find something similar.
So is there something that can be activated by some <BP_XX> Parameter ?

Otherwise i have to leverage JIB or a Dockerfile afterwards

Thank you in advance

Override available memory config for memory-calculator

We use the included gradle step that comes with the spring-boot gradle plugin to build a java container image. Now, we are very happy with how smooth the process is working, but have recently hit a roadblock when it comes to setting the available memory for the memory calculator.

We would really like to avoid setting the jvm configs ourselves, so the only way to give the available memory to the container is usually with the docker run command.

docker run -m 4g xxx

The catch is: We deploy to AWS elastic beanstalk, without a multicontainer environment. We sadly have no control over the command parameters passed on to the docker run command. The result is that the memory calculator assumes a default of 1Gb, which does not use the whole 4Gb attached to our instances. Now usually, we would just downscale to 1Gb and scale horizontally, but we have a user-triggered business process that consumes much memory and as a result the container is killed. No good.

We would really like to have a environment variable where we set something like:

BPL_TOTAL_AVAILABLE_MEMORY=4g

But have not found something in that direction. Is there something we can do? Is this the right repo to ask that question?

Thanks in advance!

Make it easier to run apps that require fonts

Some Java apps, even server side apps, might require fonts. For example, to generate PDFs.

This is difficult for a buildpack generated image as the tiny and base stack do not provide fonts.

Describe the Enhancement

Minimally, document how to bring your own fonts. See https://cloud-native.slack.com/archives/C033DV8D9FB/p1667045006503959

Ideally make this easier perhaps by setting JVM flags or by adding required libraries. Especially for tiny stack.

Possible Solution

See above.

Motivation

Fonts are required for some server apps, we should make that easier.

Support ability to use cyclonedx-maven-plugin

Currently, Syft is used to generate SBOMs. The fidelity of the resulting SBOM is very low. It does not contain provenance information of included dependencies. This information is typically included in the case of CycloneDX when leveraging the CycloneDX maven plugin as a part of the build. Maven plugins usually have access to the entire dependency graph during build time which means the SBOM contains information that can only be discovered during build time:

  • issue URLs
  • maven repository containing the resolved dependencies
  • project pages
  • test dependencies

Describe the Enhancement

Allow a maven build to contribute a CycloneDX document generated during build time.

Possible Solution

Java buildpack could discover a file such as ${project.artifactId}-${project.version}-cyclonedx.xml or ${project.artifactId}-${project.version}-cyclonedx.json and include it in the resulting cnb-sboms layer.

Motivation

CycloneDX documents generated during the maven build process will have access to more information about dependencies that can be fed into the bill of material CycloneDX document.

repo.spring.io brown-out process is breaking spring boot builds

repo.spring.io is being deprecated in favor of Maven Central, and it is under brown-out process.

Builds that depends on paketo-buildpacks/spring-boot are breaking during brown-out periods. Next one is tomorrow (12/01/2023), and it will take 4 hours.

This issue was already resolved in paketo-buildpacks/spring-boot#306, but this project need to be update to paketo-buildpacks/spring-boot v5.22.1 to get the fix.

Expected Behavior

Spring boot builds being always successful.

Current Behavior

Spring boot builds breaking at brown-out times.

    [creator]     Paketo Buildpack for Spring Boot 5.20.0
    [creator]       https://github.com/paketo-buildpacks/spring-boot
    [creator]       Build Configuration:
    [creator]         $BP_SPRING_CLOUD_BINDINGS_DISABLED   false  whether to contribute Spring Boot cloud bindings support
    [creator]       Launch Configuration:
    [creator]         $BPL_SPRING_CLOUD_BINDINGS_DISABLED  false  whether to auto-configure Spring Boot environment properties from bindings
    [creator]         $BPL_SPRING_CLOUD_BINDINGS_ENABLED   true   Deprecated - whether to auto-configure Spring Boot environment properties from bindings
    [creator]       Creating slices from layers index
    [creator]         dependencies (73.8 MB)
    [creator]         spring-boot-loader (282.2 KB)
    [creator]         snapshot-dependencies (0.0 B)
    [creator]         application (8.9 MB)
    [creator]       Launch Helper: Contributing to layer
    [creator]         Creating /layers/paketo-buildpacks_spring-boot/helper/exec.d/spring-cloud-bindings
    [creator]       Spring Cloud Bindings 1.10.0: Contributing to layer
    [creator]         Downloading from https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.10.0/spring-cloud-bindings-1.10.0.jar
    [creator]     unable to invoke layer creator
    [creator]     unable to contribute spring-cloud-bindings layer
    [creator]     unable to get dependency spring-cloud-bindings
    [creator]     unable to download https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.10.0/spring-cloud-bindings-1.10.0.jar
    [creator]     could not download https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.10.0/spring-cloud-bindings-1.10.0.jar: 401
    [creator]     ERROR: failed to build: exit status 1

Possible Solution

Just run pb-update-spring-boot.yml workflow manually, and merge the generated pull request.

Steps to Reproduce

Under brown-out times:

  1. Create a sample buildpack Java application with the Spring Boot buildpack selected and the SpringBoot Gradle plugin included.
  2. Run gradle bootBuildImage

Motivations

No more builds breaking :)

Ability to modify the Java distro in the Builder Image

What happened?

Hello folks. I´m trying to understand if there is a way for me to swap the current Java distro embedded on a Builder image, in favor of something different than the default(Liberty?)

I´m expecting this to be easily swappable and to not force me to have the need of maintaining my own builder image.

Build Configuration

Im using tekton for building container images, and the paketo available builder image from upstream.

I´m mainly interested here on Java.

I´using the latest builder, docker.io/paketobuildpacks/builder:full

Checklist

Please confirm the following:

  • I have included log output.
  • The log output includes an error message.
  • I have included steps for reproduction.

Console output wrong encoding

What happened?

Image is built from Spring's bootBuildImage gradle task. When logging non-English letters to console and check logs with docker logs, all those letters become '?'. All settings of locale remain default.

image

These logs are correctly output to external log service. Also, non-English letters are correctly shown in console when fat-jar is run natively.

【响应数据】:<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
...
<trade_state><![CDATA[NOTPAY]]></trade_state>
<trade_state_desc><![CDATA[订单未支付]]></trade_state_desc>
</xml>
  • What did you expect to happen?

Show correct letters.

Build Configuration

  • What buildpacks are you using? Please include versions.
 > Pulling builder image 'docker.io/paketobuildpacks/builder:base' ..................................................
 > Pulled builder image 'paketobuildpacks/builder@sha256:f28591ff741a5cc4c7a257ca74a4eb43887be256596d89feb625a5e74124fdef'
 > Pulling run image 'docker.io/paketobuildpacks/run:base-cnb' ..................................................
 > Pulled run image 'paketobuildpacks/run@sha256:9067d823022ac6eeeada3d91d42cad45496fa440aef02096a4c332429e8b48dc'
 > Executing lifecycle version v0.11.1
 > Using build cache volume 'pack-cache-83bbb12828d3.build'
 > Running creator
    [creator]     ===> DETECTING
    [creator]     7 of 18 buildpacks participating
    [creator]     paketo-buildpacks/ca-certificates   2.2.0
    [creator]     paketo-buildpacks/bellsoft-liberica 8.0.0
    [creator]     paketo-buildpacks/executable-jar    5.0.0
    [creator]     paketo-buildpacks/dist-zip          4.0.0
    [creator]     paketo-buildpacks/spring-boot       4.2.0
    [creator]     paketo-buildpacks/debug             3.0.0
    [creator]     paketo-buildpacks/jmx               3.0.0
  • What builder are you using? If custom, can you provide the output from pack inspect-builder <builder>?

Spring Boot 2.4.4 Gradle plugin

Checklist

  • I have included log output.
  • The log output includes an error message.
  • I have included steps for reproduction.

Maven Buildpack fails with code 145

When running the Maven Buildpack 6.5.0 on Circleci the task fails with Code 145.

Bellow is the output from the process

Paketo Maven Buildpack 6.5.0
https://github.com/paketo-buildpacks/maven
Build Configuration:
$BP_MAVEN_BUILD_ARGUMENTS -Dmaven.test.skip=true --no-transfer-progress package the arguments to pass to Maven
$BP_MAVEN_BUILT_ARTIFACT target/*.[ejw]ar the built application artifact explicitly. Supersedes $BP_MAVEN_BUILT_MODULE
$BP_MAVEN_BUILT_MODULE the module to find application artifact in
$BP_MAVEN_DAEMON_ENABLED false use maven daemon
$BP_MAVEN_POM_FILE pom.xml the location of the main pom.xml file, relative to the application root
Creating cache directory /home/cnb/.m2
Compiled Application: Contributing to layer
Executing mvnw --batch-mode -Dmaven.test.skip=true --no-transfer-progress package
Unable to parse command line options: Unrecognized option: --no-transfer-progress

  usage: mvn [options] [<goal(s)>] [<phase(s)>]
  
  Options:
   -am,--also-make                        If project list is specified, also
                                          build projects required by the
                                          list
   -amd,--also-make-dependents            If project list is specified, also
                                          build projects that depend on
                                          projects on the list
   -B,--batch-mode                        Run in non-interactive (batch)
                                          mode (disables output color)
   -b,--builder <arg>                     The id of the build strategy to
                                          use
   -C,--strict-checksums                  Fail the build if checksums don't
                                          match
   -c,--lax-checksums                     Warn if checksums don't match
   -cpu,--check-plugin-updates            Ineffective, only kept for
                                          backward compatibility
   -D,--define <arg>                      Define a system property
   -e,--errors                            Produce execution error messages
   -emp,--encrypt-master-password <arg>   Encrypt master security password
   -ep,--encrypt-password <arg>           Encrypt server password
   -f,--file <arg>                        Force the use of an alternate POM
                                          file (or directory with pom.xml)
   -fae,--fail-at-end                     Only fail the build afterwards;
                                          allow all non-impacted builds to
                                          continue
   -ff,--fail-fast                        Stop at first failure in
                                          reactorized builds
   -fn,--fail-never                       NEVER fail the build, regardless
                                          of project result
   -gs,--global-settings <arg>            Alternate path for the global
                                          settings file
   -gt,--global-toolchains <arg>          Alternate path for the global
                                          toolchains file
   -h,--help                              Display help information
   -l,--log-file <arg>                    Log file where all build output
                                          will go (disables output color)
   -llr,--legacy-local-repository         Use Maven 2 Legacy Local
                                          Repository behaviour, ie no use of
                                          _remote.repositories. Can also be
                                          activated by using
                                          -Dmaven.legacyLocalRepo=true
   -N,--non-recursive                     Do not recurse into sub-projects
   -npr,--no-plugin-registry              Ineffective, only kept for
                                          backward compatibility
   -npu,--no-plugin-updates               Ineffective, only kept for
                                          backward compatibility
   -nsu,--no-snapshot-updates             Suppress SNAPSHOT updates
   -o,--offline                           Work offline
   -P,--activate-profiles <arg>           Comma-delimited list of profiles
                                          to activate
   -pl,--projects <arg>                   Comma-delimited list of specified
                                          reactor projects to build instead
                                          of all projects. A project can be
                                          specified by [groupId]:artifactId
                                          or by its relative path
   -q,--quiet                             Quiet output - only show errors
   -rf,--resume-from <arg>                Resume reactor from specified
                                          project
   -s,--settings <arg>                    Alternate path for the user
                                          settings file
   -t,--toolchains <arg>                  Alternate path for the user
                                          toolchains file
   -T,--threads <arg>                     Thread count, for instance 2.0C
                                          where C is core multiplied
   -U,--update-snapshots                  Forces a check for missing
                                          releases and updated snapshots on
                                          remote repositories
   -up,--update-plugins                   Ineffective, only kept for
                                          backward compatibility
   -v,--version                           Display version information
   -V,--show-version                      Display version information
                                          WITHOUT stopping build
   -X,--debug                             Produce execution debug output

unable to invoke layer creator
unable to contribute application layer
error running build
exit status 1
ERROR: failed to build: exit status 1
ERROR: failed to build: executing lifecycle: failed with status code: 145

Add Node into the buildpack order group

What happened?

It is not uncommon to have a front-end and back-end app packaged together. The backend running on Java, of course :) and the front-end being HTML/Javascript. In this case, there are Maven/Gradle plugins that can be used to drive the build and also build the front-end assets and materials.

Right now, the same Maven/Gradle plugins would need to also install Node.js/NPM to work. We can add the paketo-buildpacks/node-engine buildpack to the order group and conditionally require it (probably from libbs) if one of the build tools requires Node.js/NPM.

This proposal would be to only install Node/NPM. Running commands would be up to Maven/Gradle. This is similar to how the Paketo Ruby buildpack installs Node.js/NPM and to enable Rails to build assets.

How to add container startup criteria like programs to execute on deployment?

Using the standard Dockerfile build flow we can add things like COPY, CMD and most useful RUN in order to execute something on container startup. How can this be achieved with buildpacks? I have seen dockerbuild.yml mentioned but I have not been able to find any documentation on syntax or examples.

In my case I need to run the java keytool upon container start. How do I achieve this with the java buildpack?

Add top level [[buildpack.licenses]] field

What happened?

We should add the top level [[buildpack.licenses]] field to buildpack.toml (and all implementation buildpacks) so users can see the buildpack's license through an app image's bill of materials.

Can't run simple app on heroku due to memory calculator

On early versions I was able to run a simple spring boot app on Heroku's free tier suing paketo but now I get:

2020-08-14T20:23:31.670371+00:00 app[web.1]: required memory 819590K is greater than 512M available for allocation: -XX:MaxDirectMemorySize=10M, -Xmx400M, -XX:MaxMetaspaceSize=102790K, -XX:ReservedCodeCacheSize=240M, -Xss1M x 50 threads

Is there a way to disable the memory calculator and pass my own JVM memory settings?

Permission Denied when Building on Linux

When attempting to build a sample spring native project, I am getting this error when building on a linux machine.

[INFO] [creator] # Printing build artifacts to: /layers/paketo-buildpacks_native-image/native-image/com.****.SpringNativeDemo.build_artifacts.txt
[INFO] [creator] Removing bytecode
[INFO] [creator] unable to invoke layer creator
[INFO] [creator] unable to remove /workspace/BOOT-INF
[INFO] [creator] unlinkat /workspace/BOOT-INF/lib/jackson-core-2.12.4.jar: permission denied
[INFO] [creator] ERROR: failed to build: exit status 1

I followed buildpack example provided in the Spring Native Documentation here: https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/

I have attempted to use both the tiny and base paketobuildpacks/builder images with the same result.

Checklist

  • I have included log output.
  • The log output includes an error message.
  • I have included steps for reproduction.

Enable option and support to specify a different JVM as an environment variable.

Currently by default the liberica JVM is used by default. It would be nice to have a support to switch / use a different JVM with the java build packs.

Describe the Enhancement

If we are able to pass a environment variable to the paketobuildpacks/builder:base like BP_JAVA_JVM="azul-zulu" / BP_JAVA_JVM="eclipse-openj9" , the java buildpacks should have the support to overwrite and provide support for the requested buildpacks rather than defaulting to liberica.

Possible Solution

Enable selection of different JVM's with an environment variable.

Motivation

While using the paketobuildpacks/builder:base with the pack cli this can be feasible by using the --buildpack argument. But if we are trying to run Java based builds from a CI system like tekton which uses the /cnb/lifecycle/creator program from the base image there is not an option that can be set to use a different JVM.

Implement RFC0052: Graceful Stack Upgrades

RFC

Summary

All Paketo Buildpacks should support graceful stack upgrades between the current Bionic and Jammy stacks. For most buildpacks, this should not require any changes, but for some buildpacks, layers created in previous builds that would normally be reused should be recreated if the stack ID changes.

Action Item

Consider what types of buildpacks would be impacted by a stack upgrade and make any relevant changes that would help to mitigate issues caused by that upgrade. If there is no work to be done, please comment on this issue explaining the context that helped to arrive at that conclusion.

Expose PORT variable in order to run images where PORT must be defined/exposed

What happened?

I am unable to deploy my image to google cloud run due to the inability to expose/set $PORT when using Java CNB.

Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information. <-- Error from Google Cloud run

  • What were you attempting to do?
    Built a Spring Boot application with the Java CNB and Pack. Attempted to deploy container in Google Cloud Run with image and received above error

  • What did you expect to happen?
    I expected the container to deploy properly as Java by default sets HTTP listener on 8080.

  • What was the actual behavior? Please provide log output, if possible.
    Container failed to start. (See above error output)

Build Configuration

Basic Spring boot test application with single controller endpoint. Using gradle. Attempted with server.port=${PORT:8080} as well as leaving absent from application.properties

  • Can you provide a sample app or relevant configuration (buildpack.yml,
    nginx.conf, etc.)?

any generic spring boot app will replicate the issue.

NOTE: I used a generic dockerfile to build the same test application with EXPOSE 8080 and was able to successfully deploy to google cloud run.

build image un-idempotency

recently,I found that build image almost failed eachtime, and some buildpack‘behavior
not so consistency(eg: they may 'toggle' passed or not when re-run build image)

Expected Behavior

build a image successfully or tell me why failed with more detail

Current Behavior

build image failed

Possible Solution

Steps to Reproduce

here is my shell script and you can find all information in my repo https://github.com/TianMing2018/paketo-demo#issues

# pack war
mvn clean package
# run three times and save log to nbg-pack*.log
sudo pack build pack-demo \
    --verbose \
    --buildpack paketobuildpacks/java:8 \
    --buildpack paketobuildpacks/health-checker:1 \
    --builder paketobuildpacks/builder:base \
    --volume proxy-volume:/platform/bindings/dependency-mapping:ro \
    --pull-policy if-not-present \
    --env BP_LOG_LEVEL=DEBUG \
    --env BP_JVM_TYPE=JDK \
    --env BP_JVM_VERSION=11 \
    --env BP_HEALTH_CHECKER_ENABLED=true \
    --env THC_PORT=8180 \
    --env THC_PATH="/actuator/health" \
    --env BPE_LANG=zh_CN.UTF-8 \
    --env BPE_LC_ALL=zh_CN.UTF-8 \
    --env LANG=zh_CN.UTF-8 \
    --env LC_ALL=zh_CN.UTF-8 \
    --path target/paketo-demo-0.0.1-SNAPSHOT.war > nbg-pack1.log
# run three times and save log to nbg-sb*.log
mvn install -P paketo -l nbg-sb1.log

Motivations

build a image with health-check ability

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.