Tutorial : Build and test Java applications
This page explains how to use Cloud Build to build and test Java-based applications, store built artifacts in a Maven repository in Artifact Registry, and generate build provenance information.
Before you begin
- Be familiar with creating Java-based applications.
- Be familiar with Maven
- Have your Java project ready.
- Be familiar with how to write a Cloud Build configuration file.
- Have a Maven repository in Artifact Registry. If you do not have one, create a new repository.
- To run the
gcloud
commands in this page, install the Google Cloud CLI.
Using the maven
image
You can configure Cloud Build to build Java applications using the maven
image from Docker Hub.
To execute your tasks in the maven
image, specify the URL of the image and the tagged version of the image in the name
field of your build config file. If you don't specify the image tag, Cloud Build uses the latest
image by default. Cloud Build starts the image specified in name
by using the image's default entrypoint. To override the default entrypoint and to invoke maven
as an entrypoint, specify mvn
in the entrypoint
field.
The following build config file specifies the entrypoint
for the maven
image and prints the build tool version:
Configuring Java
builds
In your project root directory, create a build config file named
cloudbuild.yaml
.Run tests:
maven
providesmaven test
, which downloads dependencies, builds the applications, and runs any tests specified in your source code. Theargs
field of a build step takes a list of arguments and passes them to the image referenced by thename
field.In your build config file, add
test
to theargs
field to invoketest
withinmaven
:Package application: To package your application into a JAR file for your
maven
image, specify thepackage
command in theargs
field. Thepackage
command builds a JAR file in/workspace/target/
.The following build step packages your Java application:
Upload to Artifact Registry:
Cloud Build generates Supply chain Levels for Software Artifacts (SLSA) build provenance information for standalone Maven packages when you upload artifacts to Artifact Registry using the
mavenArtifacts
field in your Cloud Build config file.In your build config file, use the
mavenArtifacts
field to specify your application file path and your Maven repository in Artifact Registry:Replace the following values:
- location: the location for your repository in Artifact Registry.
- project-id: the ID of the Google Cloud project that contains your Artifact Registry repository.
- repository-name: the name of your Maven repository in Artifact Registry.
- app-path: the path to your packaged application.
- build-artifact: the name of your package file created from your build step.
- group-id: uniquely identifies your project across all Maven projects, in the format
com.mycompany.app
. For more information, see the Maven guide to naming conventions. - version: the version number for your application, formatted in numbers and dots like
1.0.1
.
Optional: Enable provenance for regional builds
If you are using a regional build, add the
requestedVerifyOption
field in theoptions
in your build config file. Set the value toVERIFIED
to enable provenance metadata generation. If you don't addrequestedVerifyOption: VERIFIED
, Cloud Build generates provenance for global builds only.Start your build: manually or using build triggers.
Once your build completes, you can view repository details in Artifact Registry.
You can also view build provenance metadata and validate provenance to help protect your software supply chain.
This page explains how to use Cloud Build to build, test, and containerize Java-based applications, upload your container images to Artifact Registry, generate build provenance.
Before you begin
- Be familiar with creating Java-based applications.
- Have your Java project ready, including a
Dockerfile
. - Have a Docker repository in Artifact Registry, or create a new repository.
- Be familiar with how to write a Cloud Build configuration file.
- To run the
gcloud
commands in this page, install the Google Cloud CLI.
Using the maven
or gradle
image
You can configure Cloud Build to build Java applications using the maven
image or the gradle
image from Docker Hub.
To execute your tasks in the maven
or gradle
image, specify the URL of the image and the tagged version of the image in the name
field of your build config file. If you don't specify the image tag, Cloud Build uses the latest
image by default. Cloud Build starts the image specified in name
by using the image's default entrypoint. To override the default entrypoint and to invoke maven
or gradle
as an entrypoint, specify mvn
or gradle
in the entrypoint
field.
The following build config file specifies the entrypoint
for the maven
or gradle
image and prints the build tool version:
Configuring Java
builds
In your project root directory, create a build config file named
cloudbuild.yaml
.Run tests:
maven
andgradle
providemaven test
andgradle test
, which downloads dependencies, builds the applications, and runs any tests specified in your source code. Theargs
field of a build step takes a list of arguments and passes them to the image referenced by thename
field.In your build config file, add
test
to theargs
field to invoketest
withinmaven
andgradle
:Package application: To package your application into a JAR file for your
maven
image, specify thepackage
command in theargs
field. Thepackage
command builds a JAR file in/workspace/target/
.To package your application into a JAR file for your
gradle
image, specify theassemble
command in theargs
field. Theassemble
command builds a JAR file inworkspace/build/libs
.The following build step packages your Java application:
Containerize application: Cloud Build provides a pre-built Docker image that you can use to containerize your Java application. To containerize your Java application, in your build config file:
- Add a
name
field and specify the pre-built Docker image atgcr.io/cloud-builders/docker
. - Add an
args
field and specify thebuild
arguments, including the name of the container image to build, and the path to your build artifact. - Add an
images
field to push the built container image to Artifact Registry and generate build provenance information. If you do not use theimages
field, Cloud Build will not record provenance information. For example, if you use adocker push
build step to upload images to Artifact Registry, your build will not have associated provenance information.
The following build step containerizes your application and pushes your container image to Artifact Registry, and generates build provenance information.
Where:
- location: the regional or multi-regional location for your repository.
- project-id: the id of your Google Cloud project.
- repository: the name of your repository Artifact Registry.
- image: the name of your container image.
- build-artifact: the name of your JAR file created from your build step.
- Add a
Optional: Enable provenance for regional builds
If you are using a regional build, add the
requestedVerifyOption
field in theoptions
in your build config file. Set the value toVERIFIED
to enable provenance metadata generation. If you don't addrequestedVerifyOption: VERIFIED
, Cloud Build generates provenance for global builds only.Start your build: When you have your build config file ready, start your build by entering the following command in your terminal:
Where:
- config-file-path: the path to your build config file. In this example, the build config file is named
cloudbuild.yaml
. - source-directory: the path or URL to your source code.
REGION
: one of the supported build regions.
If you don't specify a config-file-path and source-directory in the
gcloud builds submit
command, Cloud Build assumes that the config file and the source code are in the current working directory.Once your build completes, you can view repository details in Artifact Registry.
You can also view build provenance metadata and validate provenance to help protect your software supply chain.
- config-file-path: the path to your build config file. In this example, the build config file is named
Code examples
Here are some example repositories you can use to build Java apps, each of which contain a sample application and a build config file to build and test that application:
- maven-example: A Java app and an example build config file to build and test the app with
mvn
. - gradle-example: A Java app and an example build config file to build and test the app with
gradle
.
Comments
Post a Comment