部署到 App Engine

本页介绍了如何使用 Cloud Build 将应用部署到 App Engine。如果您是刚接触 Cloud Build,请先阅读快速入门构建配置概览

App Engine 是完全托管式无服务器平台,可用于大规模开发和托管 Web 应用。如需详细了解 App Engine,请参阅 App Engine 文档

准备工作

  • 启用 App Engine API:

    启用 App Engine API

  • 如需运行此页面中的 gcloud 命令,请安装 Google Cloud CLI

  • 准备好要构建并部署到 App Engine 的应用源代码。您的源代码需要存储在代码库中,例如 Cloud Source Repositories、GitHub 或 Bitbucket。

必需的 IAM 权限

  1. 在 Google Cloud 控制台中,选择您的项目。

  2. 向 App Engine 默认服务账号授予 Cloud Build 服务账号角色。如果服务账号未显示在列表中,请在服务账号页面中找到该服务账号。

    转到“服务账号”

  3. 向 build 服务账号授予 App Engine Admin 角色和 Service Account User 角色:

    1. 打开 Cloud Build 的“设置”页面:

      打开 Cloud Build 的“设置”页面

    2. App Engine Admin 角色和服务账号用户角色的状态设置为已启用

配置部署

通过 Cloud Build,您可以使用任何公开可用的容器映像来执行任务。为此,您可以在 Cloud Build 配置文件的构建 step 中指定该映像。

App Engine 提供了 gcloud app deploy 命令,该命令使用您的源代码构建映像,并将该映像部署到 App Engine 上。您可以将 cloud-sdk 映像用作配置文件中的构建步骤,从而调用映像中的 gcloud 命令。传递到此构建步骤的参数会直接传递到 gcloud CLI, 让您可以在此映像中运行任何 gcloud 命令。

如需将应用部署到 App Engine,请按照以下步骤操作:

  1. 创建名为 cloudbuild.yamlcloudbuild.jsonCloud Build 配置文件

  2. 在配置文件中:

    • 添加 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"
    }
    
  3. 启动构建,其中 SOURCE_DIRECTORY 是源代码的路径或网址,REGION 是启动构建的受支持的构建区域之一:

     gcloud builds submit --region=REGION SOURCE_DIRECTORY
    

持续部署

通过创建 Cloud Build 触发器,您可以将软件自动部署到 App Engine。您可以将触发器配置为您在更新源代码时构建和部署映像。

要自动部署到 App Engine,请执行以下操作:

  1. 在您的代码库中,添加包含步骤的配置文件,以调用 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"
    }
    
  2. 使用上一步中创建的配置文件创建一个构建触发器:

    1. 打开 Google Cloud 控制台中的触发器页面:

      打开“触发器”页面

    2. 从页面顶部的项目选择器下拉菜单中选择您的项目。

    3. 点击打开

    4. 点击创建触发器

      创建触发器页面上,输入以下设置:

      1. 输入触发器的名称。

      2. 选择用于启动触发器的代码库事件。

      3. 选择包含源代码和构建配置文件的代码库。

      4. 指定用于启动触发器的分支名称或标记名称的正则表达式。

      5. 配置:选择您之前创建的构建配置文件。

    5. 点击创建以保存您的构建触发器。

每当您将新代码推送到代码库时,系统都将自动构建这些代码并将其部署到 App Engine。

如需详细了解如何创建 Cloud Build 触发器,请参阅创建和管理构建触发器

后续步骤