参加 2021 年 DevOps 现状问卷调查,塑造软件交付的未来,让我们了解您的想法。

在 GitHub 上运行构建

Cloud Build 提供了一个 Cloud Build GitHub 应用,可让您在每次将新提交推送到 GitHub 时自动构建代码。

本教程介绍了如何安装和配置应用,以及如何在 GitHub 上自动触发构建。

目标

在此教程中,您将学习以下操作:

  • 准备一个包含一些要用于构建的源代码的 GitHub 代码库。
  • 安装和配置 Google Cloud Build GitHub 应用。
  • 更改 GitHub 中的源代码并为更改创建拉取请求。
  • 观察到 Google Cloud Build 应用构建代码并将结果发布到拉取请求。
  • 在 GitHub 和 Cloud Console 上查看构建结果。
  • 了解配置构建的不同方法。

费用

本教程使用 Google Cloud 的以下收费组件:

  • Cloud Build

    每天的前 120 分钟构建时间免费,超出此阈值后需付费。如需了解详情,请参阅价格页面。

  • Container Registry

    如果您要使用 Dockerfile 构建并将构建的映像存储在 Container Registry 中,则您将需要为 Docker 映像使用的存储空间和网络出站流量付费。如需了解详情,请参阅 Container Registry 价格页面。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 如果您还没有 GitHub 帐号,请先创建一个。
  5. 在目标 Cloud 项目中启用 Cloud Build API。

    启用 Cloud Build API

准备包含源文件的 GitHub 代码库

如需使用 Google Cloud Build 应用,您的代码库必须包含 Dockerfilecloudbuild.yaml 文件才能配置构建。您的 Dockerfilecloudbuild.yaml 文件可以位于代码库的根目录或代码库的子目录中。

Dockerfile 是用于构建 Docker 容器的配置文件。如果您将该应用用于 Docker 构建,则只要您的代码库包含 Dockerfile 即可。本教程中的示例是使用 Dockerfile 配置的。

cloudbuild.yaml 是用于 Cloud Build 的配置文件。在以下情况下使用 cloudbuild.yaml

  • 如果您想要微调 Docker 构建,则除了 Dockerfile 之外,还可以提供 cloudbuild.yaml。如果您的代码库包含 Dockerfilecloudbuild.yaml,则 Google Cloud Build 应用将使用 cloudbuild.yaml 来配置构建。

  • 如果您想要将 Google Cloud Build 应用用于非 Docker 构建。

如需了解如何创建 cloudbuild.yaml,请参阅构建配置概览创建基本的构建配置文件

克隆示例代码库

要了解本教程中的示例,您需要一个包含一些要用于构建的源代码的 GitHub 代码库。我们将为此提供一个示例代码库,在继续进行之前,您必须先进行克隆

请按照以下步骤分叉该示例代码库。该代码库中的源文件包含 helloworld.sh 文件和 Dockerfile 文件,这些文件用于构建 Docker 映像。

  1. 在 GitHub 上,导航到 /GoogleCloudBuild/gcbapp-dockerfile-example

  2. 在页面的右上角,点击克隆

    克隆按钮的屏幕截图

    现在您已经有了包含源文件的 gcbapp-dockerfile-example 代码库的副本。

安装 Google Cloud Build 应用

在本部分中,您将安装 Google Cloud Build 应用。这让您可以将 GitHub 代码库与您的 Cloud 项目关联,并为 gcbapp-dockerfile-example 设置持续集成。

在安装和设置过程中,系统首先会要求您授权 Google Cloud Build 应用连接到 Google Cloud Platform。授权之后,您会被重定向到 Cloud Console,您将在其中选择您的 Cloud 项目。之后,系统随即会将您转回到 GitHub。

以下步骤提供了仅针对 gcbapp-dockerfile-example 代码库安装该应用的说明;但您可以选择针对更多或所有代码库安装该应用。

  1. 在目标 Cloud 项目中启用 Cloud Build API(如果尚未启用)。

  2. 转到 Google Cloud Build 应用的 GitHub 市场页面。

    打开 Cloud Build 应用页面

  3. 向下滚动,然后点击页面底部的使用 Google Cloud Build 进行设置 (Setup with Google Cloud Build)。

  4. 如果系统提示,请登录到 GitHub。

  5. 修改计划 (Edit your plan) 页面上,选择或更新结算信息,然后点击授予此应用访问权限 (grant this app access)。如果您之前购买了 GitHub Cloud Build 应用并且正在重新安装,请跳过此步骤。

  6. 根据您的业务需求从下列选项中选择一项:

    • 所有代码库 - 启用当前和将来的所有 GitHub 代码库,以便通过 Cloud Build 应用访问。

    • 仅限于选定的代码库 (Only select repositories) - 使用选定的代码库 (Select repositories) 下拉列表仅启用特定的代码库,以便通过 Cloud Build 应用访问。您以后可以启用其他代码库。

  7. 点击安装

  8. 登录 Google Cloud。

    随即将显示授权页面,在该页面中系统会要求您授权 Google Cloud Build 应用连接到 Google Cloud Platform。

    授权按钮的屏幕截图

  9. 点击授权 Google Cloud Build by GoogleCloudBuild (Authorize Google Cloud Build by GoogleCloudBuild)。

    系统会将您重定向到 Cloud Console。

  10. 选择您的 Cloud 项目。

  11. 选中同意复选框,然后点击下一步

  12. 在显示的选定的代码库页面上,按照如下步骤,将 GitHub 代码库关联到您的 Cloud 项目:

    a.确认选择了正确的 GitHub 帐号。

    b. 选中每个目标代码库旁边的复选框。

    c. 阅读同意免责声明并选中旁边的复选框,以表示您接受所显示的条款。

    d. 点击连接代码库

    如果您没有看到一个或多个目标代码库,请点击在 GitHub 上修改代码库选项,然后重复执行上述步骤以便在 Cloud Build 应用中启用其他代码库。

  13. 如果您希望创建一个或多个初始默认触发器,用于触发任何分支推送上的构建,请使用针对这些触发器而显示的创建推送触发器页面。选中每个目标代码库旁边的方框,然后点击创建推送触发器。否则,请跳过此步骤。

您现在已经成功安装了 Google Cloud Build 应用,将选定的代码库关联到了您的 Cloud 项目,并且创建了用于启动构建的推送触发器。

关联其他代码库

如需将其他代码库关联到您的 Cloud 项目,请按照以下步骤操作:

  1. 转到 Cloud Build“管理您的 GitHub 安装”(Manage your GitHub installations) 页面

  2. 选择您的 GitHub 帐号并点击继续

  3. 点击添加其他项目

  4. 项目设置下,选择您的项目或创建一个新项目。

  5. 点击关联代码库

  6. 选择代码库下,选择要与您的项目关联的所有代码库。

  7. 或者,在触发器设置下,选择您要为其创建推送触发器的所有代码库。

  8. 如需创建触发器,请点击创建推送触发器 (Create push trigger)。否则,请点击暂时跳过以返回到已关联的代码库列表。

  9. 点击完成

更新经过身份验证的 GitHub 帐号

如果您需要更新与您的 Google 帐号关联的 GitHub 帐号,可以导航到使用 GitHub 进行身份验证页面。如果您在使用与 GitHub 主帐号不同的帐号时曾遇到初始关联代码库流程,就可能需要这样做。如果您发现在 GitHub 上安装 Cloud Build 应用后,Cloud Build 关联代码库页面显示 GitHub 应用未安装在任何代码库上,就可能需要这样做。

使用 Google Cloud Build 应用构建

gcbapp-dockerfile-example 中的源文件由简单的 helloworld.sh 文件和 Dockerfile 组成。在本部分中,您将对 helloworld.sh 中的代码进行更改,并创建一个拉取请求以签入您的更改。

Google Cloud Build 应用会在您将新提交推送到代码库时构建代码。拉取请求中包含的推送提交的构建将包含在拉取请求界面中。

  1. 打开 gcbapp-dockerfile-example 中的 helloworld.sh

    https://github.com/[GITHUB_USERNAME]/gcbapp-dockerfile-example/blob/master/helloworld.sh
    
  2. 点击铅笔图标以修改该文件。

    修改文件按钮的屏幕截图

  3. 在该文件末尾添加以下行:

    echo "The time is $(date)."
    
  4. 选择为此提交创建新分支并启动拉取请求,然后点击建议文件更改

  5. 点击创建拉取请求

    这将启动 Cloud Build 来构建您的代码。

  6. 转到检查标签页。

    检查标签的屏幕截图

    此时您将看到 Cloud Build 已构建您的更改,并且应看到您的构建已成功。您还将看到其他构建详情,例如构建代码所花费的时间、构建 ID 等。

  7. 点击查看有关 Google Cloud Build 的更多详情

    Cloud Console 中的构建详情页面将打开,您可以在其中查看状态、日志和构建步骤等构建信息。

  8. 转到浏览器中的 GitHub 标签,然后转到对话标签。

    对话标签的屏幕截图

  9. 点击合并拉取请求 (Merge pull request),然后点击确认合并

    大功告成!您已确认代码更改已正确构建并已检查您的更改。

更多示例

以下是一些示例代码库,其中包含将 cloudbuild.yaml 用作配置文件的代码示例。您可以克隆代码库并使用本教程中描述的步骤来构建代码:

清理

完成 Cloud Build 教程后,您可以清理在 Google Cloud 上创建的资源,避免这些资源占用配额,日后产生费用。以下部分介绍如何删除或关闭这些资源。

移除代码库与 Google Cloud Build 应用之间的关联

如需停止使用 Cloud Build 应用触发构建,请按照以下步骤移除代码库与该应用之间的关联:

  1. 转到您的 GitHub 个人资料的设置页面:

    打开 GitHub 个人资料页面

  2. 登录您的 GitHub 帐号。

  3. 个人设置下,点击应用

  4. 找到 Google Cloud Build 所在的行,然后点击配置

  5. 代码库访问权限 (Repository access) 下,找到 [YOUR_GITHUB_USERNAME]/gcbapp-dockerfile-example 并点击 X

  6. 点击保存

    系统会将您重定向到 Google Cloud。

  7. 登录 Google Cloud。

  8. 在 Cloud Build 页面中,找到您的 Cloud 项目与 gcb-dockerfile-example 之间的关联,然后点击取消关联

您现在已移除 gcb-dockerfile-example 和 Google Cloud Build 应用之间的关联,Cloud Build 不会对 gcb-dockerfile-example 中的代码触发构建。

卸载 Google Cloud Build 应用

  1. 转到 Google Cloud Build 中的 GitHub 应用页面。

    打开 Cloud Build 应用页面

  2. 点击配置

  3. 选择安装了应用的用户名或组织。

  4. 点击卸载

删除 GitHub 代码库

  1. 在 GitHub 上,导航到代码库的主页面。

    https://github.com/[GITHUB_USERNAME]/gcbapp-dockerfile-example
    
  2. 在代码库名称下,点击设置

  3. 在危险地区下,点击删除此代码库

  4. 键入要确认的代码库的名称,然后点击我了解后果,删除此代码库

删除容器映像

  1. 打开 Google Cloud Console 中的 Container Registry 页面。

    打开 Container Registry 页面

  2. 选择您的项目,然后点击打开

  3. 打开 gcbapp-dockerfile-example

  4. 选择所有映像,然后点击删除

您在本教程中创建的映像会从项目中删除。

删除项目

为了避免产生费用,最简单的方法是删除您为本教程创建的项目。

如需删除项目,请执行以下操作:

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

后续步骤