从代码库持续部署

如果您在 Git 代码库中有源代码或函数,并且想要自动执行构建并从代码库设置持续部署,则可以在 Cloud Run 控制台中使用 Cloud Build 或 Developer 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 Build 或 Developer 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

    对于 GitHub、GitHub Enterprise Cloud 和 GitHub 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. 点击显示的网址链接,以打开已部署服务的唯一、稳定的端点。