本页面介绍了如何使用 Cloud Build 构建和测试 基于 Java 的应用,将构建的制品存储在 Artifact Registry,并生成 build 出处信息。
准备工作
- 熟悉如何创建基于 Java 的应用。
- 熟悉 Maven
- 准备好您的 Java 项目。
- 熟悉如何编写 Cloud Build 配置文件。
- 在 Artifact Registry 中拥有 Maven 制品库。如果没有,请创建新的代码库。
- 如需运行此页面中的
gcloud
命令,请安装 Google Cloud CLI。
使用 maven
映像
您可以将 Cloud Build 配置为使用
Docker Hub 中的 maven
映像。
要在 maven
映像中执行任务,请指定
您 build 的 name
字段中的该映像的标记版本
配置文件如果您未指定映像标记,则 Cloud Build
默认使用 latest
映像。Cloud Build 启动映像
在 name
中指定。要替换
并将 maven
作为入口点调用,请指定
entrypoint
字段中的 mvn
。
以下构建配置文件指定了 maven
映像的 entrypoint
并输出了构建工具版本:
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
配置 Java
构建
在项目根目录中,创建一个名为
cloudbuild.yaml
的构建配置文件。运行测试:
maven
提供了maven test
,用于下载依赖项、构建应用并运行源代码中指定的任何测试。构建步骤的args
字段采用参数列表,并将其传递给name
字段引用的映像。在构建配置文件中,将
test
添加到args
字段以调用test
在maven
内:steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['test']
软件包应用 (Package application):如需针对
maven
映像将您的应用打包为 JAR 文件,请在args
字段中指定package
命令。package
命令可在/workspace/target/
中构建 JAR 文件。以下构建步骤将打包您的 Java 应用:
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['package','-Dmaven.test.skip=true']
上传到 Artifact Registry:
在构建配置文件中,使用
mavenArtifacts
字段指定您的 应用路径和 Artifact Registry 中的 Maven 制品库:artifacts: mavenArtifacts: - repository: 'https://location-maven.pkg.dev/project-id/repository-name' path: 'app-path' artifactId: 'build-artifact' groupId: 'group-id' version: 'version'
替换以下值:
- location:您的代码库在 Artifact Registry 中的位置。
- project-id:您的 Artifact Registry 代码库所在的 Google Cloud 项目的 ID。
- repository-name:Artifact Registry 中 Maven 代码库的名称。
- app-path:已封装应用的路径。
- build-artifact:在构建步骤中创建的软件包文件的名称。
- group-id:在所有 Maven 项目中唯一标识您的项目,格式为
com.mycompany.app
。如需了解详情,请参阅 Maven 命名惯例指南。 - version:应用的版本号,采用数字和点(如
1.0.1
)的格式。
可选:启用出处生成功能
Cloud Build 可以生成 软件制品 (SLSA) 的供应链级别 build 出处元数据,以帮助保护持续集成流水线。
要启用出处生成功能,请将
requestedVerifyOption: VERIFIED
添加到配置文件的options
部分。-
构建完成后,您可以查看代码库详情 在 Artifact Registry 中构建
您还可以查看 build 出处元数据和验证出处。
后续步骤
- 了解如何查看构建结果。
- 了解如何保护 build。
- 了解如何在 Compute Engine 上执行蓝绿部署。
- 了解如何构建 Java 应用并对其进行容器化。
- 了解如何在 Cloud Run 上部署应用。
- 了解如何在 GKE 上部署应用。
- 了解如何排查构建错误。