本页介绍了如何使用 Cloud Build 构建、测试和容器化基于 Java 的应用、将容器映像上传到 Artifact Registry,以及生成 build 来源。
准备工作
- 熟悉如何创建基于 Java 的应用。
- 准备好您的 Java 项目,包括
Dockerfile。 - 在 Artifact Registry 中拥有 Docker 代码库,或创建新的代码库。
- 熟悉如何编写 Cloud Build 配置文件。
- 如需运行此页面中的
gcloud命令,请安装 Google Cloud CLI。
使用 maven 或 gradle 映像
您可以将 Cloud Build 配置为使用 Docker Hub 中的 maven 映像或 gradle 映像来构建 Java 应用。
maven
如需在 maven 映像中执行任务,请向 build 配置文件添加一个步骤,并添加以下字段:
name:将此字段的值设置为maven或maven:<tag>,其中代码代表版本。如果您未指定映像标记,则 Cloud Build 默认使用latest映像。entrypoint:设置此字段会替换name中引用的映像的默认入口点。将此字段的默认值设置为mvn以调用mvn作为构建步骤的入口点并运行mvn命令。args:构建步骤的args字段采用一系列参数,并将其传递给name字段引用的映像。
以下构建步骤为标记为 3.3-jdk-8 的 maven 映像指定了 entrypoint,并输出了构建工具版本:
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
如需在 gradle 映像中执行任务,请向 build 配置文件添加一个步骤,并添加以下字段:
name:将此字段的值设置为gradle或gradle:<tag>,其中代码代表版本。如果您未指定映像标记,则 Cloud Build 默认使用latest映像。entrypoint:设置此字段会替换name中引用的映像的默认入口点。将此字段的默认值设置为gradle以调用gradle作为构建步骤的入口点并运行gradle命令。args:构建步骤的args字段采用一系列参数,并将其传递给name字段引用的映像。
以下构建步骤为标记为 5.6.2-jdk8 的 gradle 映像指定了 entrypoint,并输出了构建工具版本:
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。 可选:在构建配置文件的
options字段中添加requestedVerifyOption: VERIFIED,以启用软件工件的供应链级别 (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 上部署应用。
- 了解如何排查构建错误。