本页面介绍了如何使用 Cloud Build 将应用部署到 Cloud Run functions。如果您是刚接触 Cloud Build,请先阅读快速入门和构建配置概览。
Cloud Run functions 是一种用于构建和连接云服务的无服务器执行环境。借助 Cloud Run functions,您可以编写单一用途的函数,这些函数会关联到从云基础设施和服务发出的事件。当所监控的事件发生时,就会触发您的函数。如需详细了解 Cloud Run functions,请参阅 Cloud Run functions 文档。
准备工作
启用 Cloud Run functions API:
准备好应用源代码。您的源代码需要存储在 GitHub 或 Bitbucket 等代码库中。
如需运行此页面中的
gcloud
命令,请安装 Google Cloud CLI。
所需的 Identity and Access Management 权限
-
在 Google Cloud 控制台中,前往 settings Cloud Build 权限页面:
对于指定的 Cloud Build 服务账号或默认的 Cloud Build 服务账号,请将以下角色的状态设置为已启用:
- Cloud Functions Developer (
roles/cloudfunctions.developer
) | 用于部署和管理函数。- 在“分配服务账号用户角色”面板中,选择要模拟的服务账号,然后点击授予权限。
- Cloud Run Admin (
roles/run.admin
) | 允许您的 Cloud Build 服务账号向 Cloud Run 部署新版本。 - 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。
- Cloud Functions Developer (
配置部署
通过 Cloud Build,您可以使用任何公开可用的容器映像来执行任务。为此,您可以在 Cloud Build 配置文件的构建 step
中指定该映像。
Cloud Run functions 提供 gcloud functions deploy
命令,可从包含函数代码的目录部署函数。您可以使用 cloud-sdk
映像作为配置文件中的构建步骤,以调用映像中的 gcloud
命令。传递到此构建步骤的参数会直接传递到 Google Cloud CLI,让您可以在此映像中运行任何 gcloud
命令。
如需将应用部署到 Cloud Run functions,请按以下步骤操作:
- 在项目根目录中,创建名为
cloudbuild.yaml
或cloudbuild.json
的 Cloud Build 配置文件。 在配置文件中:
- 添加
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 Run functions 的名称。 如果要更新现有函数,则此值必须与要更新的函数的名称匹配。FUNCTION_REGION
是您要将 Cloud Run 函数部署到的区域。如需查看受支持区域的列表,请参阅 Cloud Run functions 位置。--trigger-http
是此函数的触发器类型,在本例中为 HTTP 请求(网络钩子)。RUNTIME
是在其中运行该函数的运行时。
如需详细了解如何使用
gcloud functions deploy
,请参阅 Cloud Run functions 文档。- 添加
使用上一步中创建的配置文件启动构建:
gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
将上述配置文件中的占位符值替换为以下内容:
CONFIG_FILE_PATH
是构建配置文件的路径。SOURCE_DIRECTORY
是源代码的路径或网址。REGION
是支持的 build 区域之一。
如果您未在
gcloud builds submit
命令中指定CONFIG_FILE_PATH
和SOURCE_DIRECTORY
,则 Cloud Build 会假定配置文件和源代码位于当前工作目录中。
持续部署
通过创建 Cloud Build 触发器,您可以将软件自动部署到 Cloud Run 函数。您可以将触发器配置为您在更新源代码时构建和部署映像。
如需自动部署到 Cloud Run functions,请执行以下操作:
在您的代码库根目录中,添加包含步骤的配置文件,从而调用
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 Run functions 的名称。 如果要更新现有函数,则此值必须与要更新的函数的名称匹配。FUNCTION_REGION
是您要将 Cloud Run 函数部署到的区域。如需查看受支持区域的列表,请参阅 Cloud Run functions 位置。--trigger-http
是此函数的触发器类型,在本例中为 HTTP 请求(网络钩子)。RUNTIME
是在其中运行该函数的运行时。
使用上一步中创建的配置文件创建一个构建触发器:
每当您将新代码推送到代码库时,都将自动触发 Cloud Run 函数上的构建和部署。
如需详细了解如何创建 Cloud Build 触发器,请参阅创建和管理构建触发器。
后续步骤
- 了解如何在 Compute Engine 上执行蓝绿部署
- 了解如何在 Cloud Run 上部署
- 了解如何在 GKE 上部署
- 了解如何在 Firebase 上部署
- 了解如何在 App Engine 上部署
- 了解如何排查构建错误。