部署到 Cloud Functions

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

Cloud Functions 是一种用于构建和连接云服务的无服务器执行环境。借助 Cloud Functions,您可以编写用途单一的简单函数,这些函数会被附加到从您的云端基础架构和服务发出的事件。当所监控的事件发生时,就会触发您的函数。如需详细了解 Cloud Functions,请阅读 Cloud Functions 文档

准备工作

  • 启用 Cloud Functions API:

    启用 Cloud Functions API

  • Cloud Functions Developer 角色授予 Cloud Build 服务账号:

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

      打开 Cloud Build 的“设置”页面

    2. Cloud Functions Developer 角色的状态设置为已启用

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

  • 随时保存要构建并部署到 Cloud Functions 的应用源代码。您的源代码需要存储在代码库中,例如 Cloud Source Repositories、GitHub 或 Bitbucket。

配置 Deployment

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

Cloud Functions 提供 gcloud functions deploy 命令,可从包含函数代码的目录部署函数。您可以将 cloud-sdk 映像用作配置文件中的构建步骤,从而调用映像中的 gcloud 命令。传递到此构建步骤的参数会直接传递到 Google Cloud CLI,让您可以在此映像中运行任何 gcloud 命令。

如需将应用部署到 Cloud Functions,请按以下步骤操作:

  1. 在项目根目录中,创建名为 cloudbuild.yamlcloudbuild.jsonCloud Build 配置文件
  2. 在配置文件中:

    • 添加 name 字段并指定 gcloud 构建步骤。
    • functions deploy 添加到 args 字段以调用 gcloud functions deploy 命令。 如需了解可用的配置选项,请参阅 gcloud functions deploy 参考文档
    • --source=. 表示源代码位于当前工作目录中。

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    将上述配置文件中的占位符值替换为以下内容:

    • FUNCTION_NAME 是要部署的 Cloud Functions 的名称。 如果要更新现有函数,则此值必须与要更新的函数的名称匹配。
    • FUNCTION_REGION 是您要将 Cloud Functions 函数部署到的区域。如需查看受支持版本的列表,请参阅 Cloud Functions 函数位置
    • --trigger-http 是此函数的触发器类型,在本例中为 HTTP 请求(网络钩子)。
    • RUNTIME 是在其中运行该函数的运行时

    如需详细了解如何使用 gcloud functions deploy,请参阅 Cloud Functions 文档

  3. 使用上一步中创建的配置文件启动构建:

     gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
    

    将上述配置文件中的占位符值替换为以下内容:

    • CONFIG_FILE_PATH 是构建配置文件的路径。
    • SOURCE_DIRECTORY 是源代码的路径或网址。
    • REGION受支持的构建区域之一。

    如果您未在 gcloud builds submit 命令中指定 CONFIG_FILE_PATHSOURCE_DIRECTORY,则 Cloud Build 会假定配置文件和源代码位于当前工作目录中。

持续部署

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

如需自动部署到 Cloud Functions,请执行以下操作:

  1. 在您的代码库根目录中,添加包含步骤的配置文件,从而调用 gcloud functions deploy 命令:

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    将上述配置文件中的占位符值替换为以下内容:

    • FUNCTION_NAME 是要部署的 Cloud Functions 的名称。 如果要更新现有函数,则此值必须与要更新的函数的名称匹配。
    • FUNCTION_REGION 是您要将 Cloud Functions 函数部署到的区域。如需查看受支持版本的列表,请参阅 Cloud Functions 函数位置
    • --trigger-http 是此函数的触发器类型,在本例中为 HTTP 请求(网络钩子)。
    • RUNTIME 是在其中运行该函数的运行时
  2. 使用上一步中创建的配置文件创建一个构建触发器:

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

      打开“触发器”页面

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

    3. 点击创建触发器

    4. 名称字段中,为触发器输入名称。

    5. 区域下,为触发器选择区域

    6. 事件下方,选择要启动触发器的代码库事件。

    7. 来源下方,选择您的代码库以及用于启动触发器的分支或标记名称。如需详细了解如何指定要自动构建的分支,请参阅创建构建触发器

    8. 配置下,选择 Cloud Build 配置文件(YAML 或 JSON)

    9. Cloud Build 配置文件位置字段中的 / 后面,输入 cloudbuild.yaml

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

每当您将新代码推送到代码库时,都将自动触发 Cloud Functions 上的构建和部署。

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

后续步骤