GitXplorerGitXplorer
G

runtime-builder-java

public
8 stars
11 forks
15 issues

Commits

List of commits on branch master.
Verified
d3f0ab515ed9b876faf80b3359ce7a5543a1e191

fixing release script path (#105)

ddonmccasland committed 5 years ago
Verified
675ca2840ff937418ac59e3999ffb0e332511a6e

Adding build scripts (#104)

ddonmccasland committed 5 years ago
Unverified
952824b0e61423a9b37b5c63d7fb9bb9ab6e6aec

Update Travis to build using OpenJDK 10 (#103)

nnealeu committed 5 years ago
Unverified
9d0940757cd714740faf7dce5cefd4211f655de3

Update dependencies to ones supporting Java 11 (#102)

nnealeu committed 5 years ago
Unverified
7650651168ee618a20c7164de1f53a70012b5e57

Revert "Update maven env variable (#65)" (#100)

mmeltsufin committed 6 years ago
Unverified
a4ea20508df20d9a0dd07e8dfb02f93a8b2b1e5f

Add an apt-get upgrade to the builder image. (#99)

ddlorenc committed 6 years ago

README

The README file for this repository.

Java Runtime Builder

Build Status codecov unstable

A Google Cloud Container Builder pipeline for packaging Java applications into supported Google Cloud Runtime containers. It consists of a series of docker containers, used as build steps, and a build pipeline configuration file.

Running via Google Cloud Container Builder (recommended)

To run via Google Cloud Container Builder, first install the Google Cloud SDK. Then, initiate a Cloud Container Build using the provided java.yaml file:

# Determine the name of your desired output image. Note that it must be a path to a Google Container
# Registry bucket to which your Cloud SDK installation has push access.
OUTPUT_IMAGE=gcr.io/my-gcp-project/my-application-container

# initiate the cloud container build
gcloud builds submit /path/to/my/java/app \ 
    --config java.yaml \
    --substitutions _OUTPUT_IMAGE=$OUTPUT_IMAGE

After the build completes, the built application container will appear in the gcr.io container registry at the specified path.

Running via Docker (without Cloud Container Builder)

Build steps can be run locally, one at a time, using docker. (This requires that the runtime-builder image is available locally.) Note that these commands effectively mirror the steps in the java.yaml pipeline config file.

LOCAL_APPLICATION_DIR=/path/to/my/app

# Generate docker resources
# See java.yaml for the fully specified jdk-runtimes-map server-runtimes-map args
docker run -v $LOCAL_APPLICATION_DIR:/workspace -w /workspace runtime-builder 

# package my application into a docker container
docker build -t my-app-container $LOCAL_APPLICATION_DIR

Configuration

An app.yaml file can be included in the sources passed to the Java Runtime Builder, but is not required. The runtime_config section of this file tells the builder how to build and package your source. In most cases, runtime_config can be omitted.

Alternatively, these settings can be provided as command line arguments to the Java Runtime Builder.

Option Name Type Default Description
jdk string openjdk8 Select the JDK used in the generated image. Must be either openjdk8 or openjdk9. NOTE: openjdk9 is not compatible with the server option (see below).
server string jetty Select the web server to use in the generated image. Must be either jetty9 or tomcat8
artifact string Discovered based on the content of your build output The path where the builder should expect to find the artifact to package in the resulting docker container. This setting will be required if your build produces more than one artifact.
build_script string mvn -B -DskipTests clean package if a maven project is detected, or gradle build if a gradle project is detected The build command that is executed to build your source
jetty_quickstart boolean false Enable the Jetty quickstart module to speed up the start time of the application (Only available if the jetty runtime is selected).

The settings in app.yaml and the command line share the same names. For example, --jdk=openjdk8 can be included in the args: section of java.yaml. If a setting is provided in both app.yaml and the command line, the setting from the command line will be used.

Sample app.yaml

runtime: java
env: flex

# all parameters specified below in the runtime_config block are optional
runtime_config:
  artifact: "target/my-artifact.jar"
  build_script: "mvn clean install -Pcloud-build-profile"
  jetty_quickstart: true

Images

The --jdk-runtimes-map and --server-runtimes-map settings are optional in both java.yaml when using the Cloud Container Builder as well as when building locally. These are the default mappings and will be available unless individually overridden:

JDK Runtime Mapping Default
* gcr.io/google-appengine/openjdk:8
openjdk8 gcr.io/google-appengine/openjdk:8
openjdk9 gcr.io/google-appengine/openjdk:9
Server Runtime Mapping Default
*|* gcr.io/google-appengine/jetty:9
openjdk8|* gcr.io/google-appengine/jetty:9
openjdk8|jetty9 gcr.io/google-appengine/jetty:9
openjdk8|jetty gcr.io/google-appengine/jetty:9
openjdk8|tomcat8 gcr.io/google-appengine/tomcat:8
openjdk8|tomcat gcr.io/google-appengine/tomcat:8
*|jetty9 gcr.io/google-appengine/jetty:9
*|jetty gcr.io/google-appengine/jetty:latest
*|tomcat8 gcr.io/google-appengine/tomcat:8
*|tomcat gcr.io/google-appengine/tomcat:latest

These settings are also optional:

Command Line Settings Default
--compat-runtime-image gcr.io/google-appengine/jetty9-compat:latest
--maven-docker-image gcr.io/cloud-builders/mvn:3.5.0-jdk-8
--gradle-docker-image gcr.io/cloud-builders/gradle:4.0-jdk-8

Development guide

  • See DEVELOPING.md for instructions on how to build and test this pipeline.

Contributing changes

Licensing