使用 Cloud Build 通过 Git 实现持续部署

您可以使用 Cloud Build 自动构建代码并将其部署到 Cloud Run,方法是:使用 Cloud Build 触发器在您将新的代码提交并推送到 Git 代码库的指定分支时,自动构建和部署您的代码。如需查看示例,请参阅创建模板仓库并通过 Git 持续部署的快速入门。

使用 Cloud Build 触发器构建容器时,在部署到 Cloud Run 后,Google Cloud 控制台中会显示服务的源代码库信息

注意:您还可以使用 Cloud Deploy 设置持续交付流水线,以将 Cloud Run 服务部署到多个环境中。

准备工作

  • 您拥有包含 Dockerfile 的 Git 代码库,或者您的代码库采用 Google Cloud 的 Buildpack 支持的语言之一编写。
  • Enable the Cloud Build API.

    Enable the API

所需的角色

如需获得使用 Cloud Build 从 Git 部署 Cloud Run 服务所需的权限,请让管理员向您授予项目的以下 IAM 角色:

运行构建的服务账号必须拥有以下角色:

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。如果您的 Cloud Run 服务与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

通过 Cloud Run 界面设置持续部署

根据您是在新服务上还是在现有服务上设置持续部署,设置过程略有不同。请点击相应标签页以了解详情。

新服务

  1. 按照部署新服务中的说明创建新服务,请务必在服务设置页面选择从源代码库持续部署新修订版本

  2. 服务设置页面中,点击使用 Cloud Build 设置

  3. GitHub 是默认代码库提供方。如果您尚未进行身份验证,请点击身份验证并按照说明操作。使用 Cloud Build GitHub 应用连接代码库。

    设置持续部署步骤 1

  4. 点击下一步

  5. 填写“构建配置”步骤中的选项:

    • 分支 - 指示在运行触发器时应使用哪个来源。您可以在此处输入正则表达式。系统会自动验证匹配的分支:您可以在输入下方看到它们。请注意,如果只有一个分支匹配,则触发器将在创建后自动执行。
    • Build 类型

      • 如果您的代码库应使用 Docker 构建,并且其中包含 Dockerfile,请选择 Dockerfile来源位置指示 Dockerfile 的位置和名称。此目录将用作 Docker 构建上下文。所有路径都应该相对于当前目录。

      • 否则,请选择 Google Cloud Buildpacks。使用 Buildpack context 指定目录,并使用 Entrypoint(可选)提供启动服务器的命令。示例:gunicorn -p :8080 main:app 是 Python 的启动命令,java -jar target/myjar.jar 是 Java 的启动命令。将其留空以使用默认行为

    设置持续部署步骤 2

  6. 点击保存

  7. 验证所选设置。

    设置持续部署验证

  8. 点击创建

  9. 请注意,您将被重定向到“服务详情”页面,可以在其中跟踪持续部署设置的进度。

  10. 完成所有步骤后,请注意额外的选项:

现有服务

  1. 转到 Cloud Run

  2. 在服务列表中找到服务,然后点击该服务。

  3. 点击设置持续部署

  4. GitHub 是默认代码库提供方。如果您尚未进行身份验证,请点击身份验证并按照说明操作。使用 Cloud Build GitHub 应用连接代码库。

    设置持续部署步骤 1

  5. 点击下一步

  6. 填写“构建配置”步骤中的选项:

    • 分支 - 指示在运行触发器时应使用哪个来源。您可以在此处输入正则表达式。系统会自动验证匹配的分支:您可以在输入下方看到它们。请注意,如果只有一个分支匹配,则触发器将在创建后自动执行。
    • Build 类型

      • 如果您的代码库应使用 Docker 构建,并且其中包含 Dockerfile,请选择 Dockerfile来源位置指示 Dockerfile 的位置和名称。此目录将用作 Docker 构建上下文。所有路径都应该相对于当前目录。

      • 否则,请选择 Google Cloud Buildpacks。使用 Buildpack context 指定目录,并使用 Entrypoint(可选)提供启动服务器的命令。示例:gunicorn -p :8080 main:app 是 Python 的启动命令,java -jar target/myjar.jar 是 Java 的启动命令。将其留空以使用默认行为

    设置持续部署步骤 2

  7. 点击保存

  8. 该页面会重新加载并显示持续部署设置的进度。

  9. 完成所有步骤后,请注意额外的选项:

手动设置持续部署

如果您需要使用手动过程,而不是使用界面,请参阅手动设置持续部署

将现有 Cloud Build 触发器挂接到 Cloud Run 服务。

如果您已有 Cloud Build 触发器,则可以将其关联到服务,并利用“服务详情”页面中的 Google Cloud 控制台功能:修改持续部署按钮和构建记录图表。

为此,请添加一个标签,并使用 gcb-trigger-id 作为键,使用 Cloud Build 触发器的唯一标识符(不是触发器名称)作为值。如需了解如何设置标签,请参阅设置或修改标签