本页面介绍了如何使用 Cloud Build 将应用部署到 App Engine。如果您是刚接触 Cloud Build,请先阅读快速入门和构建配置概览。
App Engine 是完全托管式无服务器平台,可用于大规模开发和托管 Web 应用。如需详细了解 App Engine,请参阅 App Engine 文档。
准备工作
启用 App Engine API:
准备好应用源代码。您的源代码需要存储在 GitHub 或 Bitbucket 等代码库中。
如需运行此页面中的
gcloud命令,请安装 Google Cloud CLI。
所需的 Identity and Access Management 权限
-
在 Google Cloud 控制台中,前往 settings Cloud Build 权限页面:
对于指定的 Cloud Build 服务账号或默认的 Cloud Build 服务账号,请将以下角色的状态设置为已启用:
- App Engine Admin (
roles/appengine.appAdmin) | 使 Cloud Build 能够将新版本部署到 App Engine。- 在“分配服务账号用户角色”面板中,选择要模拟的服务账号,然后点击授予权限。
- Storage Admin (
roles/storage.admin) | 允许从 Cloud Storage 读取和写入数据。 - Artifact Registry Writer (
roles/artifactregistry.writer) | 允许从 Artifact Registry 拉取映像以及向 Artifact Registry 写入映像。 - 日志写入者 (
roles/logging.logWriter) | 允许将日志条目写入 Cloud Logging。 - Cloud Build Editor (
roles/cloudbuild.builds.editor) | 允许您的服务账号运行 build。
- App Engine Admin (
配置部署
通过 Cloud Build,您可以使用任何公开可用的容器映像来执行任务。为此,您可以在 Cloud Build 配置文件的构建 step 中指定该映像。
App Engine 提供了 gcloud app deploy 命令,该命令使用您的源代码构建映像,并将该映像部署到 App Engine 上。您可以使用 cloud-sdk 映像作为配置文件中的构建步骤,以调用映像中的 gcloud 命令。
传递到此构建步骤的参数会直接传递到 gcloud CLI,让您可以在此映像中运行任何 gcloud 命令。
如需将应用部署到 App Engine,请按照以下步骤操作:
创建名为
cloudbuild.yaml或cloudbuild.json的 Cloud Build 配置文件。在配置文件中:
- 添加
name字段以指定cloud-sdk构建步骤。 - 添加
entrypoint字段,以在调用cloud-sdk时使用bash工具。 在
args字段中,调用gcloud app deploy命令,然后设置timeout,以供 App Engine 调用 Cloud Build 时使用。这是因为 Cloud Build 构建步骤和构建的默认超时时间为 10 分钟,完成 App Engine 部署所需的时间可能比该时间长。如果指定较长的超时时间,就能确保完成gcloud app deploy所用的时间超过 10 分钟时,构建不会超时。使用 App Engine 标准环境时超时错误:您只能在使用 App Engine 柔性环境时按此处所述配置超时。App Engine 标准环境不允许配置构建超时。如果您使用 Cloud Build 在 App Engine 标准环境中进行部署,但构建失败并显示超时错误,请考虑使用 App Engine 柔性环境或 Cloud Run 代替 App Engine 标准环境。
添加超过 10 分钟的 构建
timeout值。
YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }- 添加
启动 build,其中
SOURCE_DIRECTORY是源代码的路径或网址,REGION是支持的 build 区域之一,用于启动 build:gcloud builds submit --region=REGION SOURCE_DIRECTORY
持续部署
通过创建 Cloud Build 触发器,您可以将软件自动部署到 App Engine。您可以将触发器配置为您在更新源代码时构建和部署映像。
要自动部署到 App Engine,请执行以下操作:
在您的代码库中,添加包含步骤的配置文件,以调用
gcloud app deploy命令:YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy'] timeout: '1600s'JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "bash", "args": [ "-c", "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy" ] } ], "timeout": "1600s" }使用上一步中创建的配置文件创建一个构建触发器:
在 Google Cloud 控制台中打开触发器页面:
从页面顶部的项目选择器下拉菜单中选择您的项目。
点击打开。
点击创建触发器。
在创建触发器页面上,输入以下设置:
输入触发器的名称。
选择用于启动触发器的代码库事件。
选择包含源代码和构建配置文件的代码库。
指定用于启动触发器的分支名称或标记名称的正则表达式。
配置:选择您之前创建的构建配置文件。
点击创建以保存您的构建触发器。
每当您将新代码推送到代码库时,系统都将自动构建这些代码并将其部署到 App Engine。
如需详细了解如何创建 Cloud Build 触发器,请参阅创建和管理构建触发器。
后续步骤
- 了解如何在 Cloud Run 上部署
- 了解如何在 Compute Engine 上执行蓝绿部署
- 了解如何在 GKE 上部署
- 了解如何在 Cloud Run functions 上部署
- 了解如何在 Firebase 上部署
- 了解如何排查构建错误。