从 GitHub 构建代码库

GitHub 触发器允许您基于 Git 推送和拉取请求自动构建,并在 GitHub 和 Cloud Console 上查看构建结果。此外,GitHub 触发器还支持现有 GitHub 触发器支持的所有功能,并使用 Cloud Build GitHub 应用来配置并向 GitHub 验证身份。

本页面介绍了如何使用 Cloud Build GitHub 应用创建 GitHub 触发器并在 GitHub 上进行构建。

准备工作

  • 启用 Cloud Build API。

    启用 API

  • 在 GitHub 代码库中准备好源代码。
  • GitHub 源代码库中包含 DockerfileCloud Build 配置文件
  • 如果您最初将代码库连接到 Cloud Build,请确保对代码库具有管理员级别权限。如需详细了解 GitHub 代码库权限,请参阅组织的代码库权限级别
  • 如需使用此页面上的 gcloud 命令,请安装 Cloud SDK

安装 Cloud Build 应用

如需安装 Cloud Build 应用并将 GitHub 代码库关联到您的 Cloud 项目,请执行以下操作:

  1. 打开 Google Cloud Console 中的触发器页面。

    打开“触发器”页面

  2. 在顶部栏的项目选择器中,选择您的 Cloud 项目。

  3. 点击连接代码库

  4. 选择 GitHub(Cloud Build GitHub 应用),再选中同意复选框,然后点击继续

  5. (可选)如果您之前没有登录到 GitHub,请立即登录。

    此时会显示“授权”页面,要求您授权 Google Cloud Build 应用连接到 Google Cloud。

    授权按钮的屏幕截图

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

  6. 点击安装 Google Cloud Build

  7. 在显示的弹出式窗口中,选择您的 GitHub 用户名或组织。

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

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

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

  9. 点击安装以安装 Cloud Build 应用。

    弹出式窗口将关闭,系统会将您定向到 Cloud Build 中的项目选择器页面。在此页面上,您可以选择现有 Cloud 项目或创建新项目。

    如果此页面中未列出现有项目,请点击选择项目以查看所有现有项目的列表。

  10. 选择项目或创建新项目后,您会看到连接代码库面板。

  11. 选择代码库部分,选择以下字段:

    • GitHub 帐号:用于安装 Cloud Build GitHub 应用的 GitHub 帐号。系统可能已经预先选择了此字段。

    • 代码库:您要连接到 Cloud Build 的代码库。

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

  12. 选择 GitHub 帐号和代码库后,阅读同意声明并选中旁边的复选框,以表示您接受所显示的条款。

  13. 点击 Connect(关联)。

  14. (可选)在创建触发器部分,在为这些代码库创建示例触发器字段中,选择要为其创建触发器的代码库。选择代码库后,点击创建触发器

  15. 点击完成

您现在已将一个或多个 GitHub 代码库关联到您的 Cloud 项目。 系统随即将您转到 Cloud Console 中的触发器页面。

(可选)更新经过身份验证的 GitHub 帐号

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

创建 GitHub 触发器

控制台

如需使用 Google Cloud Console 创建 GitHub 触发器,请执行以下操作:

  1. 打开 Google Cloud Console 中的触发器页面。

    打开“触发器”页面

  2. 从页面顶部的项目选择器下拉菜单中选择您的项目。

  3. 点击打开

  4. 点击创建触发器

  5. 输入以下触发器设置:

    • 名称:输入触发器的名称。

    • 说明(可选):输入触发器的说明。

    • 事件:选择用于调用触发器的代码库事件。

      • 推送到分支:设置触发器,以便基于对特定分支的提交启动构建。

      • 推送新标记:将触发器设置为以基于包含特定标记的提交启动构建。

      • 拉取请求(仅限 GitHub 应用):设置触发器,以便基于针对拉取请求进行的提交启动构建。

    • 来源:选择代码库以及相应的分支或标记来监视事件。

      • 代码库:从可用代码库列表中,选择所需的代码库。如需关联新的代码库,请参阅关联其他代码库

      • 分支标记:指定要匹配分支或标记值的正则表达式。如需了解可接受的正则表达式语法,请参阅 RE2 语法

      • 评论控制:如果您选择了拉取请求(仅限 GitHub 应用)作为事件,请选择以下选项之一来控制构建是否将由触发器自动执行:

      • 必需(所有者和协作者除外):代码库所有者或协作者创建或更新拉取请求后,触发器会自动执行构建。如果外部贡献者发起操作,则只有在所有者或协作者对拉取请求中的 /gcbrun 添加注释之后,触发器才会执行构建。

      • 必需:任何贡献者创建或更新拉取请求后,只有在所有者或协作者对拉取请求中的 /gcbrun 添加注释之后,触发器才会执行构建。

      • 不需要:任何贡献者创建或更新拉取请求后,触发器将自动执行构建。

    • 包含的文件(可选):如果更改影响至少一个文件,则会调用构建。

    • 忽略的文件(可选):如果更改只影响被忽略的文件,则不会调用构建。

    • 配置:选择位于远程代码库中的构建配置文件,或创建要用于构建的内嵌构建配置文件。

      • 类型:选择要用于构建的配置类型。
        • Cloud Build 配置文件(yaml 或 json):为您的配置使用构建配置文件。
        • Dockerfile:为您的配置使用 Dockerfile
      • 位置:为您的配置指定位置。

        • 代码库:如果您的配置文件位于远程代码库中,请提供构建配置文件的位置或 Dockerfile 目录,并为生成的映像提供名称。如果您的配置是 Dockerfile,则还可以选择提供构建的超时时间。提供了 Dockerfile 和映像名称后,您会看到构建将执行的 docker build 命令的预览。
        • 内嵌:如果您选择了 Cloud Build 配置文件(yaml 或 json)作为配置选项,则可以指定内嵌构建配置。点击打开编辑器,使用 YAML 或 JSON 语法在 Google Cloud Console 中编写您的构建配置文件。点击完成以保存您的构建配置。
  6. 点击创建以保存您的构建触发器。

如需使用 gcloud 命令创建 GitHub 应用触发器,请参阅创建构建触发器gcloud 命令。

gcloud

如需使用 gcloud 命令创建 GitHub 触发器,请运行以下命令:

    gcloud beta builds triggers create github \
        --repo=REPO_NAME \
        --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
        --build-config=BUILD_CONFIG_FILE

其中:

  • REPO_NAME 是代码库的名称。
  • BRANCH_PATTERN 是代码库中要在其上调用构建的分支名称。
  • TAG_PATTERN 是代码库中要在其上调用构建的标记名称。
  • BUILD_CONFIG_FILE 是构建配置文件的路径。

构建和查看更改

如需使用 GitHub 触发器进行构建,您需要推送更改并将其提交到关联的源代码库,或在拉取请求上配置构建。检查更改后,Cloud Build 将构建代码。

如要在 GitHub 上查看构建更改,请转到代码库中的检查标签页。

对话标签的屏幕截图

您将看到 Cloud Build 已构建您的更改。您还将看到其他构建详情,例如构建代码所花费的时间和构建 ID。

如需在 Cloud Build 中查看构建更改,请点击在 Google Cloud Build 中查看更多详情。Cloud Console 中的构建详情页面将打开,您可以在其中查看状态、日志和构建步骤等构建信息。

基于 GitHub 的不同类型触发器

如果您的源代码位于 GitHub 中,Cloud Build 提供了两种自动执行构建的方式。本部分介绍并比较两种基于 GitHub 的触发器。

  • GitHub 旧版触发器:当您创建 GitHub 旧版触发器时,Cloud Build 会镜像您的 Cloud Source Repositories 中的 GitHub 代码库,并使用镜像代码库执行其所有操作。您可以使用 Cloud Console 创建和管理 GitHub 触发器

  • GitHub 触发器:这种触发器使用 Cloud Build GitHub 应用配置并向 GitHub 验证身份。GitHub 触发器允许您基于 Git 推送和拉取请求自动启动构建,并在 GitHub 和 Cloud Console 上查看构建结果。您可以使用 Cloud Console 或 Cloud Build API 创建和管理 GitHub 触发器

  • GitHub Enterprise 触发器:这种触发器允许您调用构建以响应 GitHub Enterprise 实例上的提交或拉取请求。您可以使用 Cloud Console 或 Cloud Build API 创建和管理 GitHub Enterprise 触发器

下表比较了 GitHub 旧版触发器、GitHub 触发器和 GitHub Enterprise 触发器:

特征 GitHub 旧版触发器 GitHub 触发器 GitHub Enterprise 触发器
基于推送到源代码的请求执行构建
对拉取请求执行构建
使用 Cloud Console 创建触发器
使用 Cloud Build API 创建触发器
使用 Cloud Build GitHub 应用创建触发器
在 Cloud Console 上查看构建状态
在 GitHub 上查看构建状态

数据共享

GitHub 触发器将数据发送到 Cloud Build GitHub 应用。发送到应用的数据有助于您按名称识别触发器,并在 GitHub 上查看构建结果。

以下数据目前在 Google Cloud 和 GitHub 应用之间共享:

  • 触发器名称

如果您是在 2020 年 8 月之前创建的触发器,则您的项目可能未启用数据共享功能。如需为项目中的所有 GitHub 触发器启用数据共享,请点击 Cloud Build 数据共享标签页上的启用

如果为 GitHub 代码库启用了必需的状态检查,则启用数据共享可能会暂时中断状态检查。您可以通过以下方式调整状态检查配置以查找触发器名称:

  • 在 GitHub 代码库中停用任何特定于 Cloud Build 的必需检查
  • 确保在 Cloud Build 中启用数据共享功能
  • 在 Cloud Build 中执行一项新构建,将状态发布到您的代码库
  • 重新启用必需的状态检查,选择触发器名称

后续步骤