使用 Cloud Build 自动构建

本主题介绍如何使用 Cloud Build 和 Cloud Source Repositories 自动构建。

您可以对 Cloud Build 进行配置,以便在用户将更改推送到存储在 Cloud Source Repositories 中的文件时自动构建新映像。可启动自动构建的事件称为构建触发器。这些触发器可以帮助确保您的容器映像保持最新,还可用来构建和测试功能分支。

构建触发器可以基于 Dockerfile 或 build 配置文件执行构建。

使用 Dockerfile

要使用 Dockerfile 作为构建配置,您需要指定 Dockerfile 目录并为生成的映像提供名称。 如需详细了解如何创建 Dockerfile,请参阅 Docker 文档

提供 Dockerfile 和映像名称后,您将看到构建执行的 docker build 命令的预览以及触发器配置的摘要。

使用构建配置文件

要为您的 build 配置使用 build 配置文件,您需要提供 build 配置文件的位置。

设置好位置后,您将看到触发器的摘要。

准备工作

其他信息

  • 构建触发器使用代码库的浅层克隆。对于浅表克隆,仅会在工作区中检出触发自动构建的单个提交。如需了解详情,以及了解如何包含更多代码库历史记录,请参阅 撤消浅层克隆

  • 如果您使用另一个托管的 Git 提供程序(例如在 GitHub 或 Bitbucket 上),并且仍需要将该代码库镜像到 Cloud Source Repositories,则您必须对正在使用的 Google Cloud 项目拥有 cloudbuilds.builds.create 权限。此权限 通常通过 cloudbuild.builds.editor 角色。

    第一次使用外部代码库设置构建触发器时,您需要设置使用该代码库的授权。如需了解详情,请参阅 将代码库添加为远程代码库

    设置外部代码库后,Cloud Source Repositories 会创建代码库的镜像。

  • 如需了解 Cloud Build 的配额和限制,请参阅 配额和限制 介绍

创建构建触发器

控制台

  1. 在 Google Cloud 控制台中打开触发器页面。

    打开“触发器”页面

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

  3. 点击打开

  4. 点击创建触发器

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

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

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

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

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

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

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

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

      构建执行时,代码库的内容将被复制到 /workspace(Cloud Build 使用的默认工作目录)。如需详细了解工作目录,请参阅构建配置概览页面

      • 分支标记:指定要匹配分支或标记值的正则表达式。标记中不能使用正斜杠 (/)。如需详细了解可接受的正则表达式语法,请参阅 RE2 语法
    • 配置:选择位于远程代码库中的构建配置文件,或创建要用于构建的内嵌构建配置文件。

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

        • 代码库:如果您的配置文件位于 远程代码库时,请提供您的 构建配置文件,即 Dockerfile 目录或 buildpacks 目录如果您的构建配置类型是 Dockerfile 或 buildpack,则需要为生成的映像提供名称,还需要视情况提供构建的超时时间。提供了 Dockerfile 或 buildpack 映像名称后,您会看到您的构建将执行的 docker buildpack 命令的预览。
        • Buildpack 环境变量(可选):如果您选择了 buildpacks 作为配置类型,请点击添加软件包环境变量以指定 buildpack 环境变量和值。如需详细了解 buildpack 环境变量,请参阅环境变量
        • 内嵌:如果您选择了 Cloud Build 配置文件(yaml 或 json)作为配置选项,则可以指定内嵌构建配置。点击 Open Editor(打开编辑器),在 使用 YAML 或 JSON 语法创建 Google Cloud 控制台。点击完成以保存您的构建配置。

    • 服务账号:选择调用触发器时使用的服务账号。如果您未选择服务账号,则使用默认的 Cloud Build 服务账号

  6. 点击创建以保存您的构建触发器。

gcloud

运行以下命令:

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

其中:

  • REPO_NAME 是代码库的名称。
  • BRANCH_PATTERN 是代码库中要在其上调用构建的分支名称。
  • TAG_PATTERN 是代码库中要在其上调用构建的标记名称。
  • BUILD_CONFIG_FILE 是构建配置文件的路径。
  • SERVICE_ACCOUNT预览版)是与您的服务账号相关联的电子邮件地址。如果不添加此标志,则系统会使用默认的 Cloud Build 服务账号
  • [可选] --require-approval 是一个要添加的标志,用于将触发器配置为需要获得批准。

如需查看完整的标志列表,请参阅 gcloud 参考,了解如何为 Cloud Source Repositories 创建触发器

运行 gcloud 命令以使用 Cloud Source Repositories 创建触发器后,您应该会看到如下所示的输出:

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

查看构建触发器

如需在 Google Cloud 控制台中查看触发器,请打开 Cloud Build 触发器页面。

如需查看 Cloud Source Repositories 中给定项目的触发器,请点击右上角的设置 ,然后点击 Cloud Build 触发器

跳过构建触发器

在某些情况下,例如,当您更新文档或配置文件时,您可能想要更改源代码但不想触发构建。

在这类情况下,您可以在提交消息中包含 [skip ci][ci skip],这样就不会触发构建。

例如:

Author: A User <auser@example.com>
Date:   Tue Apr 3 12:03:35 2018 -0700

Fixed customer affecting issue. [skip ci]

如果稍后要基于该提交运行构建,请使用运行触发器按钮。

撤消浅层克隆

为了在 Git 代码库上构建源代码,Cloud Source Repositories 执行代码库的 浅层克隆。当 Cloud Source Repositories 执行浅表克隆时,它仅从工作区中检出触发构建的单个提交,然后从该源代码进行构建。Cloud Source Repositories 不会勾选任何其他分支或历史记录。这样做是为了提高效率。Cloud Source Repositories 提取整个代码库和历史记录只是为了从一次提交构建而不会延迟构建。

要在构建中包含更多代码库的历史记录,请在构建配置文件中添加一个构建步骤以“撤销浅层”克隆。例如:

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

如需详细了解 git fetch,请参阅 Git 参考。如需了解如何编写构建配置文件,请参阅 构建配置概览

后续步骤