从代码库持续部署

如果您在 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. Build 配置步骤中,填写以下选项:

    • 分支

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

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

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

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

  4. 页面会重新加载,然后您会返回到‘“创建服务”表单。

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

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

  7. 点击创建

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

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

  • 在 Cloud Run 控制台中点击修改仓库设置,以在 Cloud Build 控制台中修改 Cloud Build 触发器。
  • 通过点击从仓库构建和部署步骤中的日志链接,查看 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 账号的权限并关联到仓库。您在网络浏览器中看到的提示取决于 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. 个人访问令牌部分中,输入您的账号的令牌

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

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

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

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

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

    GitLab 企业版

    对于 GitLab Enterprise Edition 选项:

    1. 主机网址字段中,输入要连接到的主机的网址。

    2. 个人访问令牌部分中,输入您的账号的令牌

      • 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. Build 配置步骤中,填写以下选项:

    • 分支

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

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

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

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

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

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

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