本页介绍了如何使用 Cloud Build 将应用部署到 App Engine。如果您是刚接触 Cloud Build,请先阅读快速入门和构建配置概览。
App Engine 是完全托管式无服务器平台,可用于大规模开发和托管 Web 应用。如需详细了解 App Engine,请参阅 App Engine 文档。
准备工作
启用 App Engine API:
如需运行此页面中的
gcloud
命令,请安装 Google Cloud CLI。准备好要构建并部署到 App Engine 的应用源代码。您的源代码需要存储在代码库中,例如 Cloud Source Repositories、GitHub 或 Bitbucket。
必需的 IAM 权限
在 Google Cloud 控制台中,选择您的项目。
向 App Engine 默认服务账号授予 Cloud Build 服务账号角色。如果服务账号未显示在列表中,请在服务账号页面中找到该服务账号。
向 build 服务账号授予 App Engine Admin 角色和 Service Account User 角色:
打开 Cloud 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" }
- 添加
启动构建,其中
SOURCE_DIRECTORY
是源代码的路径或网址,REGION
是启动构建的受支持的构建区域之一: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 函数上部署
- 了解如何在 Firebase 上部署
- 了解如何排查构建错误。