本页介绍了如何使用 Cloud Build 构建、测试和容器化基于 Java 的应用、将容器映像上传到 Artifact Registry 以及生成 build 来源。
准备工作
- 熟悉如何创建基于 Java 的应用。
- 准备好 Java 项目,包括
Dockerfile
。 - 在 Artifact Registry 中拥有 Docker 代码库,或创建新的代码库。
- 熟悉如何编写 Cloud Build 配置文件。
- 如需运行此页面中的
gcloud
命令,请安装 Google Cloud CLI。
使用 maven
或 gradle
映像
您可以将 Cloud Build 配置为使用
maven
图片
或 gradle
图片
运行容器
maven
如需在 maven
映像中执行任务,请向 build 配置文件添加一个步骤,并添加以下字段:
name
:将此字段的值设置为maven
或maven:<tag>
,其中 标记表示版本。如果您未指定映像标记,则 Cloud Build 默认使用latest
映像。entrypoint
:设置此字段会替换name
中引用的图片。将此字段的值设置为mvn
以进行调用 将mvn
作为构建步骤的入口点并运行mvn
命令。args
:构建步骤的args
字段接受一系列参数, 并将其传递给name
字段引用的图像。
以下构建步骤为 maven
映像指定 entrypoint
标记为 3.3-jdk-8
并输出构建工具版本:
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
如需在 gradle
映像中执行任务,请在构建配置中添加包含以下字段的步骤:
name
:将此字段的值设置为gradle
或gradle:<tag>
,其中 标记表示版本。如果您未指定映像标记,则 Cloud Build 默认使用latest
映像。entrypoint
:设置此字段会替换name
中引用的图片。将此字段的值设置为gradle
以进行调用 将gradle
作为构建步骤的入口点并运行gradle
命令。args
:构建步骤的args
字段接受一系列参数, 并将其传递给name
字段引用的图像。
以下构建步骤为 gradle
映像指定 entrypoint
标记为 5.6.2-jdk8
并输出构建工具版本:
steps:
- name: gradle:5.6.2-jdk8
entrypoint: gradle
args: ['--version']
配置 Java
构建
在项目根目录中,创建一个名为
cloudbuild.yaml
的构建配置文件。运行测试:
maven
和gradle
会提供maven test
和gradle test
,用于下载依赖项,构建应用以及运行源代码中指定的任何测试。构建步骤的args
字段采用一系列参数,并将其传递给name
字段引用的映像。在构建配置文件中,将
test
添加到args
字段可在maven
和gradle
内调用test
:maven
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['test']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['test']
软件包应用 (Package application):如需针对
maven
映像将您的应用打包为 JAR 文件,请在args
字段中指定package
命令。package
命令可在/workspace/target/
中构建 JAR 文件。如需针对
gradle
映像将您的应用打包为 JAR 文件,请在args
字段中指定assemble
命令。assemble
命令可在workspace/build/libs
中构建 JAR 文件。以下构建步骤将打包您的 Java 应用:
maven
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['package','-Dmaven.test.skip=true']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['assemble']
容器化应用:Cloud Build 提供 预构建的 Docker 映像 可用于容器化 Java 应用。要将您的 Java 应用,在您的构建配置文件中:
- 添加
name
字段并在gcr.io/cloud-builders/docker
中指定预构建的 Docker 映像。 - 添加
args
字段并指定build
参数,包括 要构建的容器映像以及构建工件的路径。 - 添加
images
字段,以将构建的容器映像推送到 Artifact Registry。 可选:添加
requestedVerifyOption: VERIFIED
在 build 配置文件的options
字段中启用 软件制品 (SLSA) 的供应链级别 生成文本。
以下构建步骤会将您的应用容器化, 映像上传到 Artifact Registry,并生成 build 出处信息:
maven
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=target/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
gradle
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=build/libs/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
其中:
- location:代码库的单区域或多区域位置。
- project-id:您的 Google Cloud 项目的 ID。
- repository:您的代码库 Artifact Registry 的名称。
- image:容器映像的名称。
- build-artifact:根据构建步骤创建的 JAR 文件的名称。
- 添加
启动构建:准备好构建配置文件后,通过在终端中输入以下命令来启动构建:
gcloud builds submit --region=REGION --config config-file-path source-directory
其中:
- config-file-path:构建配置文件的路径。在此示例中,构建配置文件名为
cloudbuild.yaml
。 - source-directory:源代码的路径或网址。
REGION
:某个受支持的 build 区域。
如果您未在
gcloud builds submit
命令中指定 config-file-path 和 source-directory,则 Cloud Build 会假定配置文件和源代码位于当前工作目录中。构建完成后,您可以在 Artifact Registry 中查看代码库详情。
您还可以查看 build 来源元数据和验证来源。
- config-file-path:构建配置文件的路径。在此示例中,构建配置文件名为
代码示例
以下是一些可用于构建 Java 应用的示例代码库,每个代码库都包含一个示例应用和一个用于构建和测试该应用的构建配置文件:
- maven-example:一个 Java 应用和一个使用
mvn
构建和测试该应用的示例构建配置文件。 - gradle-example:一个 Java 应用和一个使用
gradle
构建和测试该应用的示例构建配置文件。
后续步骤
- 了解如何查看构建结果。
- 了解如何保护 build。
- 了解如何构建独立的 Java 应用。
- 了解如何在 Cloud Run 上部署应用。
- 了解如何在 GKE 上部署应用。
- 了解如何排查构建错误。