测试和部署应用

区域 ID

REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

详细了解区域 ID

了解如何在本地运行您的应用,以及如何在 App Engine 上部署和测试应用。

在本地运行

要在部署之前测试应用的功能,请使用您常用的开发工具

部署应用的准备工作

在部署应用之前,请做好以下准备:

部署应用

使用 gcloud app deploy 命令可以将您的应用部署到 App Engine。在部署期间,Cloud Build 服务会为您的应用构建一个容器映像,用于在 App Engine 标准环境中运行。每个 build 都与您的 Google Cloud 项目运行在同一区域。详细了解如何管理构建映像

如需以编程方式部署应用,请使用 Admin API

部署服务

如需将应用部署到 App Engine,您需要部署各个版本的应用服务及其所有配置文件。

要部署应用服务的某个版本,请从服务的 app.yaml 文件所在的目录运行以下命令:

gcloud app deploy

如果使用该命令时不指定文件,则仅部署当前目录中的 app.yaml 文件。默认情况下,deploy 命令会为您所部署的版本生成一个唯一 ID,将该版本部署到 Google Cloud 项目(您已将 Google Cloud CLI 配置为使用该项目),并将所有流量路由到新版本。

通过指定目标文件或添加其他参数,您可以更改此命令的默认行为:

  • 如需部署服务的其他配置文件,您必须单独定位并部署每个文件。例如:
    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • 要指定自定义版本 ID,请使用 --version 标志。
  • 如需阻止流量自动路由到新版本,请使用 --no-promote 标志。
  • 如需部署到特定 Google Cloud 项目,请使用 --project 标志。

例如,如需将 app.yaml 定义的服务部署到特定 Google Cloud 项目,请为该服务分配一个自定义版本 ID,并阻止流量路由到新版本:

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

如需详细了解此命令,请参阅 gcloud app deploy 参考文档

部署多项服务

您可以使用相同的部署命令来部署或更新应用中包含的多项服务。

须知事项:

  • 您必须先将应用的某个版本部署到 default 服务,然后才能创建和部署后续服务。
  • 您必须在每项服务对应的 app.yaml 配置文件中指定服务的 ID。如需指定服务 ID,请在每个配置文件中添加 service 元素定义。如果没有在配置文件中添加此元素定义,则该版本默认部署到 default 服务。

如需部署多项服务,请单独部署每项服务的 app.yaml 文件。您可以在一个 gcloud app deploy 命令中指定多个文件:

gcloud app deploy service1/app.yaml service2/app.yaml

查看构建日志

Cloud Build 会流式传输构建日志和部署日志,您可以在 Google Cloud 控制台的 Cloud Build 构建记录部分查看这些日志。如需查看应用所在区域中的构建,请使用页面顶部的区域下拉菜单选择要作为过滤条件的区域。

管理构建映像

您每次部署新版本时,系统都会使用 Cloud Build 服务创建一个容器映像。该容器映像是在应用的区域中构建的,然后在 App Engine 标准环境中运行。

构建的容器映像存储在 Container Registryapp-engine-tmp/app 文件夹中。您可以下载这些映像,以便在其他位置存储或运行。部署完成后,App Engine 便不再需要容器映像。请注意,容器映像不会自动删除,因此为了避免达到存储空间配额,您可以安全地删除不再需要的任何映像。但是,如果您将来可能需要这些映像或希望保留这些映像的副本,则需要在删除之前导出该副本。如需详细了解如何在 Container Registry 中管理映像,请参阅 Container Registry 文档

忽略文件

您可以使用 .gcloudignore 文件指定在部署服务时不会上传到 App Engine 的文件和目录。如果要忽略构建工件和其他无需随部署上传的文件,这种做法会非常实用。

查看应用

将应用部署到 App Engine 之后,您可以运行以下命令来启动浏览器,然后访问 https://PROJECT_ID.REGION_ID.r.appspot.com 来查看该应用:

gcloud app browse

在迁移流量之前在 App Engine 上进行测试

在配置新版本以接收流量之前,您可以在 App Engine 上测试新版本。例如,如需测试 default 服务的新版本,请执行以下操作:

  1. 部署新版本,但阻止流量自动路由到新版本:

    gcloud app deploy --no-promote

  2. 转到以下网址以访问新版本:

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    现在,您可以在 App Engine 运行时环境中测试新版本。您可以通过查看应用日志来调试应用。如需了解详情,请参阅写入应用日志

    App Engine 将发送到 https://PROJECT_ID.REGION_ID.r.appspot.com 的请求路由到先前配置为接收流量的版本。

  3. 如需将流量发送到新版本,请使用 Google Cloud 控制台迁移流量:

    管理版本

    选择刚部署的版本,然后点击迁移流量

如需使用相同流程来测试其他服务的新版本,您可以将网址中的 default 替换为要测试的服务的名称:

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

如需详细了解如何定位特定服务和版本,请参阅请求的路由方式

使用构建环境变量

您可以为支持 buildpack 的运行时设置构建环境变量。

构建环境变量是键值对,您可以指定这些键值对来配置用于部署应用的 buildpack。例如,您可能希望指定编译器选项。

须知事项:

  • 键必须以大写的 ASCII 字母开头,并且可以包含大写的 ASCII 字母、数字和下划线。
  • 您应该避免创建具有 GOOGLE_* 键前缀的任何变量。
  • 以下键均预留给 Google 使用:
    • GOOGLE_RUNTIME
    • GOOGLE_RUNTIME_VERSION
    • GOOGLE_ENTRYPOINT
    • GOOGLE_DEVMODE
  • 您可以使用 Buildpack 支持的任何密钥。

如需将环境变量与 Buildpack 搭配使用,请在 app.yaml 文件中指定 build_env_variables 字段。

详细了解 Buildpack。

使用 Cloud Trace

Cloud Trace 对于了解请求如何在您的应用中传播非常有用。您可以检查单个请求的详细延迟时间信息,也可以查看整个应用的总体延迟时间。

如需在 Cloud Trace 中查看跟踪记录详细信息,您可以按照查找和探索跟踪记录进行操作。在 Trace 探索器中,您可以使用过滤条件按特定 App Engine 服务和版本进行过滤。