从代码库持续部署

如果您在 Git 代码库中有源代码或函数,并且想要自动执行构建并从代码库设置持续部署,则可以在 Cloud Run 控制台中使用 Cloud BuildDeveloper Connect

设置完成后,Cloud Run 会使用 Cloud Build 触发器,在您每次将新提交推送到 Git 代码库的指定分支时,自动构建和部署代码。在部署到 Cloud Run 后, Google Cloud 控制台中会显示服务的源代码库信息

在 Cloud Run 控制台中:

  • 如果您选择 Cloud Build,则可以设置从 GitHub 进行持续部署。如需查看示例,请参阅创建模板仓库并通过 Git 持续部署的快速入门。

  • 如果您选择 Developer Connect(预览版),则可以设置从 GitHub、GitLab 和 Bitbucket 代码库进行持续部署。

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

准备工作

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  • 如果您选择“Developer Connect”(预览版)选项,请启用 Developer Connect API:

    启用该 API

所需的角色

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

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

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

通过 Cloud Run 控制台设置持续部署

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

新服务

  1. 在 Google Cloud 控制台中,前往 Cloud Run 页面。

    转到 Cloud Run

  2. 如果您要创建新服务,请点击关联代码库以显示创建服务表单。

    如果您要修改现有服务,请在服务列表中找到该服务,然后点击该服务。点击连接到代码库

  3. 选择 Cloud BuildDeveloper Connect

    1. 如果您选择了 Cloud Build,请参阅使用 Cloud Build 进行设置

    2. 如果您选择了 Developer Connect,请参阅设置 Developer Connect

现有服务

  1. 在 Google Cloud 控制台中,前往 Cloud Run 页面。

    转到 Cloud Run

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

  3. 点击连接到代码库,然后按照使用 Cloud Build 进行设置中的说明操作。

设置 Cloud Build

通过 Cloud Build 进行设置窗格中:

  1. 从列表中选择一个代码库。请注意,加载仓库列表需要一些时间。按照提示操作,然后点击下一步

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

    如果您找不到自己的代码库,请点击管理关联的代码库链接。按照说明授予您的代码库对 Cloud Build 的访问权限。

  2. 构建配置步骤中,填写以下选项:

    • 分支

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

      • Dockerfile:如果您的代码库应使用 Docker 构建,并且其中包含 Dockerfile,请选择此选项。

        • 来源位置中,指定 Dockerfile 的位置和名称。此目录将用作 Docker 构建上下文。所有路径都应该相对于当前目录。
      • Go、Node.js、Python、Java、.NET Core、Ruby 或 PHP(通过 Google Cloud 的 buildpacks):如果您的代码库应使用 buildpacks 构建,请选择此选项。

        • 构建上下文目录中,指定相应目录。
        • Entrypoint(可选)中,提供启动服务器的命令。例如,gunicorn -p :8080 main:app 表示 Python,java -jar target/myjar.jar 表示 Java。将此字段留空以使用默认行为
        • 函数目标(仅适用于函数部署)中,输入要调用的函数。否则,请将此字段留空。
  3. 点击保存

  4. 页面会重新加载,并返回到创建服务表单。

  5. 验证源代码库部分中的所选设置。

  6. 填写配置下的其余表单。

  7. 点击创建

    您将被重定向到服务详情页面,可以在其中跟踪“从代码库构建和部署”设置的进度。

完成所有步骤后,您可以:

  • 在 Cloud Run 控制台中点击修改代码库设置,以在 Cloud Build 控制台中修改 Cloud Build 触发器。
  • 点击从代码库中构建和部署步骤中的日志链接,查看构建历史记录。
  • “修订版本详细信息”部分中查看来源详细信息。

手动设置持续部署

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

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

如果您已有 Cloud Build 触发器,则可以通过向 Cloud Run 服务添加标签来将其关联到服务。

如需在 Cloud Run 控制台中添加标签,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud Run 页面。

    转到 Cloud Run

  2. 选择您的服务。

  3. 对于所选服务,点击页面顶部的标签以打开标签窗格。

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

设置 Developer Connect

设置 Developer Connect 窗格中:

  1. 选择一个代码库,然后点击下一步

    如果您没有看到要选择的代码库,请点击关联新代码库,打开通过 Developer Connect 关联新代码库窗格。点击相应标签页,详细了解如何连接到某个源代码管理提供商。

    GitHub

    对于 GitHubGitHub Enterprise CloudGitHub Enterprise 选项,请点击连接

    如果您没有看到对话框,请关闭所有弹出式窗口拦截浏览器插件,并确保浏览器设置允许弹出式窗口。例如,在 Chrome 中,按照说明允许弹出式窗口

    按照以下说明,在您的 GitHub 账号中授予权限并关联到代码库。您在 Web 浏览器中看到的提示取决于 GitHub 账号是否已安装 Cloud Run GitHub 应用。

    在 Cloud Run 对话框中,完成以下步骤:

    如果您看到 GitHub 账号列表,请完成以下步骤来安装应用并关联代码库

    1. 选择您要使用的 GitHub 账号。

    2. 选择要授予访问权限的一个或多个代码库。

    如果您看到有关重新使用现有应用安装的提示,请完成以下步骤,选择在何处配置应用

    1. 点击 GitHub 账号,查看已安装 Google Cloud Run 应用的账号。如果您看到要使用的账号,请点击确认进行选择。

    2. 如果您没有看到要使用的账号,请执行以下操作:

      1. 选择在另一个 GitHub 账号中安装 GitHub 应用,然后点击确认

      2. 按照 GitHub 步骤允许应用安装。

      3. 选择要授予访问权限的一个或多个代码库。

    对话框关闭后,应用安装即完成。

    GitLab

    对于 GitLab 选项:

    1. Personal Access Tokens 部分,输入您账号的令牌

      • API 访问令牌:输入具有 api 范围的个人访问令牌。
      • 读取 API 访问令牌:输入具有 read_api 范围的个人访问令牌。

      您有责任确保您的 GitLab 令牌保持有效。GitLab 令牌的最长生命周期为 365 天,除非令牌创建者或管理员另有规定。如需了解如何管理令牌过期设置和通知,请参阅有关个人访问令牌的 GitLab 文档。

      如需了解详情,请参阅 GitLab 关于个人访问令牌过期的文档。

    2. 点击显示更多即可查看可选的配置设置。

    3. 可选:在加密部分中,选择一个 CMEK 密钥来加密 Cloud Run 创建的 Secret Manager Secret。

    GitLab 企业版

    对于 GitLab Enterprise Edition 选项:

    1. 对于主机网址,请输入要连接的主机的网址。

    2. Personal Access Tokens 部分,输入您账号的令牌

      • API 访问令牌:输入具有 api 范围的个人访问令牌。
      • 读取 API 访问令牌:输入具有 read_api 范围的个人访问令牌。

      您有责任确保您的 GitLab 令牌保持有效。GitLab 令牌的最长生命周期为 365 天,除非令牌创建者或管理员另有指定。如需了解如何管理令牌过期设置和通知,请参阅有关个人访问令牌的 GitLab 文档。

      如需了解详情,请参阅 GitLab 关于个人访问令牌过期的文档。

    3. 点击显示更多即可查看可选的配置设置。

    4. 可选:在加密部分中,选择一个 CMEK 密钥来加密 Cloud Run 创建的 Secret Manager Secret。

    Bitbucket

    对于 Bitbucket Cloud 选项:

    1. 工作区中,输入您的 Bitbucket Cloud 工作区 ID

    2. 访问令牌部分,输入您的 Bitbucket 访问令牌:

    3. 点击显示更多即可查看可选的配置设置。

    4. 可选:在加密部分中,选择一个 CMEK 密钥来加密 Cloud Run 创建的 Secret Manager Secret。

    Bitbucket 数据中心

    对于 Bitbucket 数据中心选项:

    1. 对于主机网址,请输入要连接的 Bitbucket 数据中心主机的网址。

    2. 访问令牌部分中,输入您的 Bitbucket Cloud 访问令牌:

      • 管理员访问令牌:输入具有代码库管理员范围访问权限的令牌。

      • 读取访问令牌:输入具有代码库读取范围访问权限的令牌。

    3. 点击显示更多即可查看可选的配置设置。

    4. 可选:在加密部分中,选择一个 CMEK 密钥来加密 Cloud Run 创建的 Secret Manager Secret。
  2. 点击连接。此过程可能需要几秒钟的时间。

  3. 构建配置步骤中,填写以下选项:

    • 分支

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

      • Dockerfile:如果您的代码库应使用 Docker 构建,并且其中包含 Dockerfile,请选择此选项。

        • 来源位置中,指定 Dockerfile 的位置和名称。此目录将用作 Docker 构建上下文。所有路径都应该相对于当前目录。
      • Go、Node.js、Python、Java、.NET Core、Ruby 或 PHP(通过 Google Cloud 的 buildpacks):如果您的代码库应使用 buildpacks 构建,请选择此选项。

        • 构建上下文目录中,指定相应目录。
        • Entrypoint(可选)中,提供启动服务器的命令。例如,gunicorn -p :8080 main:app 适用于 Python,java -jar target/myjar.jar 适用于 Java。将此字段留空以使用默认行为
        • 函数目标(仅适用于函数部署)中,输入要调用的函数。否则,请将此字段留空。
  4. 点击保存

  5. 填写配置下的其余表单。

  6. 完成服务配置后,请点击创建以将映像部署到 Cloud Run,然后等待部署完成。

  7. 点击显示的网址链接,以打开已部署服务的唯一、稳定的端点。