查看构建结果

本页面介绍如何使用 Google Cloud Console、gcloud 命令行工具和 Cloud Build API 查看有关 Cloud Build 构建的信息。

准备工作

如果希望使用本指南中的命令行示例,请安装 gcloud 命令行工具

查看构建结果

如需查看构建日志,除了 Cloud Build IAM 权限之外,主帐号还需要以下 IAM 角色之一:

如需详细了解查看构建日志所需的权限,请参阅查看构建日志

控制台

在 Cloud Console 中,构建记录菜单可以显示以下信息:构建状态(比如成功或失败)、源代码、结果、创建时间和映像等。

如需查看构建记录菜单,请打开 Google Cloud Console 中的构建记录页面。

打开“构建记录”页面

这会显示构建记录页面,其中显示了最近的构建列表。

如需按区域过滤构建,请使用页面顶部的区域下拉菜单选择要作为过滤条件的区域。您只能过滤与 Cloud Functions 部署关联的区域化构建。

如需过滤构建,请使用页面顶部的过滤构建文本框或手动输入查询

如需查看其他列,例如触发器说明工件,请使用列选择器

如需查看特定构建的详细信息,请转到构建记录,然后点击指定的构建。此时会显示构建详情页面,其中包含构建的构建摘要构建摘要包含:

  • 构建日志,您的构建的日志。
  • 执行详细信息,构建的详细信息,其中包括环境变量和替换内容。
  • 构建工件,构建的工件,例如容器映像、构建日志或二进制文件。

选择左侧步骤表格中的步骤,您可以查看构建日志或某一构建步骤的执行详情。

gcloud

gcloud builds list 命令可显示您的所有构建。

要查看您的构建,请运行以下命令:

gcloud builds list

您应该会看到类似于如下内容的输出:

ID                                    CREATE_TIME                DURATION  SOURCE                                                                                      IMAGES                                              STATUS
3a2055bc-ccbd-4101-9434-d376b88b8940  2018-02-16T18:33:26+00:00  23S       gs://gcb-docs-project_cloudbuild/source/1518806004.25-db1e250a7b7f496eb8242bfee5ac308e.tgz  gcr.io/gcb-docs-project/quickstart-image (+1 more)  SUCCESS
900704ca-7a0c-4569-ac08-884593c19aac  2018-02-16T18:32:32+00:00            gs://gcb-docs-project_cloudbuild/source/1518805951.23-03dd53d16f684c568fa2bb7ff7ebda06.tgz  -                                                   FAILURE
021f9ede-ddaa-4cfb-8988-60142b015ebd  2018-02-14T15:48:44+00:00  10S       gs://gcb-docs-project_cloudbuild/source/1518623322.56-9cd088ffc1e04f5aa6040728772d0c2a.tgz  -                                                   SUCCESS
8126d538-3c43-4304-a14c-33aceec8cb97  2018-02-14T15:46:13+00:00  10S       gs://gcb-docs-project_cloudbuild/source/1518623172.09-327c02585a4e44e782ac97dd80d5a5d5.tgz  gcr.io/gcb-docs-project/quickstart-image (+1 more)  SUCCESS

要查看有关特定构建的详细信息,请运行以下命令:

gcloud builds describe [BUILD_ID]

其中,[BUILD_ID] 是您想要获取详细信息的构建的 ID。

您应该会看到类似于如下内容的输出:

createTime: '2018-02-22T14:49:54.066666971Z'
finishTime: '2018-02-22T14:50:05.463758Z'
id: bcdb9c48-d92c-4489-a3cb-08d0f0795a0b
images:
- gcr.io/gcb-docs-project/quickstart-image
logUrl: https://console.cloud.google.com/cloud-build/builds/bcdb9c48-d92c-4489-a3cb-08d0f0795a0b?project=gcb-docs-project
logsBucket: gs://404889597380.cloudbuild-logs.googleusercontent.com
projectId: gcb-docs-project
results:
    buildStepImages:
    - sha256:a4363bc75a406c4f8c569b12acdd86ebcf18b6004b4f163e8e6293171462a79d
    images:
    - digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
      name: gcr.io/gcb-docs-project/quickstart-image
      pushTiming:
          endTime: '2018-02-22T14:50:04.731919081Z'
          startTime: '2018-02-22T14:50:00.874058710Z'
      - digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
        name: gcr.io/gcb-docs-project/quickstart-image:latest
        pushTiming:
            endTime: '2018-02-22T14:50:04.731919081Z'
            startTime: '2018-02-22T14:50:00.874058710Z'
source:
    storageSource:
        bucket: gcb-docs-project_cloudbuild
        generation: '1519310993665963'
        object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
sourceProvenance:
    fileHashes:
        gs://gcb-docs-project_cloudbuild/source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz#1519310993665963:
        fileHash:
        - value: -aRYrWp2mtfKhHSyWn6KNQ==
    resolvedStorageSource:
        bucket: gcb-docs-project_cloudbuild
        generation: '1519310993665963'
        object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
startTime: '2018-02-22T14:49:54.966308841Z'
status: SUCCESS
steps:
- args:
  - build
  - --no-cache
  - -t
  - gcr.io/gcb-docs-project/quickstart-image
  - .
  name: gcr.io/cloud-builders/docker
  status: SUCCESS
  timing:
      endTime: '2018-02-22T14:50:00.813257422Z'
      startTime: '2018-02-22T14:50:00.102600442Z'
timeout: 600s
timing:
    BUILD:
        endTime: '2018-02-22T14:50:00.873604173Z'
        startTime: '2018-02-22T14:50:00.102589403Z'
    FETCHSOURCE:
        endTime: '2018-02-22T14:50:00.087286880Z'
        startTime: '2018-02-22T14:49:56.962717504Z'
    PUSH:
        endTime: '2018-02-22T14:50:04.731958202Z'
        startTime: '2018-02-22T14:50:00.874057159Z'

步骤状态和构建状态

构建完成后,Cloud Build 会提供构建的整体 status,以及每个构建步骤的 status

下表总结了构建或步骤成功、超时或失败时的状态:

事件 构建状态 步骤状态
构建成功 SUCCESS 所有步骤都标记为 SUCCESS
构建失败 FAILURE
  • 失败的步骤标记为 FAILED
  • 在构建终止之前成功执行的步骤标记为 SUCCESS
  • 执行中的步骤标记为 CANCELLED
  • 未开始执行的步骤标记为 QUEUED
构建被用户取消 CANCELLED
  • 在取消构建之前成功执行的步骤标记为 SUCCESS
  • 执行中的步骤标记为 CANCELLED
  • 未开始执行的步骤标记为 QUEUED
构建超时 TIMEOUT
  • 在构建超时之前成功执行的步骤标记为 SUCCESS
  • 执行中的步骤标记为 CANCELLED
  • 未开始执行的步骤标记为 QUEUED
步骤超时 FAILED
  • 超时步骤标记为 TIMEOUT
  • 在步骤超时之前成功执行的步骤标记为 SUCCESS
  • 执行中的步骤标记为 CANCELLED
  • 未开始执行的步骤标记为 QUEUED

如需查看每个步骤和构建的状态,请运行 gcloud builds describe 命令:

gcloud builds describe [BUILD_ID]

其中,[BUILD_ID] 是构建的 ID。

以下代码段显示了具有超时步骤的构建中每个步骤的状态:

status: FAILURE
steps:
- args:
  - sleep
  - '60'
id: long sleep
name: alpine
status: CANCELLED
timing:
    endTime: '2018-02-26T14:09:18.531368493Z'
    startTime: '2018-02-26T14:09:11.023235026Z'
waitFor:
- '-'
- args:
- sleep
- '3'
id: shorty
name: alpine
status: SUCCESS
timeout: 60s
timing:
    endTime: '2018-02-26T14:09:15.497724138Z'
    startTime: '2018-02-26T14:09:11.023676903Z'
waitFor:
- '-'
- args:
  - sleep
  - '60'
name: alpine
status: TIMEOUT
timeout: 3s
timing:
    endTime: '2018-02-26T14:09:18.527488475Z'
    startTime: '2018-02-26T14:09:15.497736775Z'
waitFor:
- shorty
- args:
  - 'false'
name: alpine
status: QUEUED
waitFor:
- long sleep
timeout: 60s

使用查询过滤构建结果

如需查找符合特定条件的构建的信息,请在 Google Cloud Console 的构建记录页面上的过滤构建字段中提供查询字符串。例如,您可以查询已失败的构建(状态字段中的值为 FAILURE)、在某一时间之后创建的构建、标记的构建以及其他符合此类条件的构建。

支持的查询字段

您可以根据以下字段的值查询构建:

  • status
  • build_id
  • trigger_id
  • source.storage_source.bucket
  • source.storage_source.object
  • source.repo_source.repo_name
  • source.repo_source.branch_name
  • source.repo_source.tag_name
  • source.repo_source.commit_sha
  • source_provenance.resolved_repo_source.commit_sha
  • results.images.name
  • results.images.digest
  • options.requested_verify_option
  • tags
  • images
  • create_time
  • start_time
  • finish_time

使用点表示法 (.) 列出的字段是子字段。

构造查询字符串

查询字符串使用通用格式:

field="value"

使用点表示法指定子字段,比如 results.images.name。查询支持 =!= 比较运算符,以及用于具有数值(例如 create_time)的字段的 >>=<<=

您可以使用布尔表达式 ANDOR 创建复合查询。

常见示例查询

如需查询所有成功的构建,请运行以下命令:

status="SUCCESS"

如需查询尚未完成的所有构建,请运行以下命令:

status="QUEUED" OR status="WORKING"

如需查询具有给定结果映像名称的构建,请运行以下命令:

(status="SUCCESS" OR status="FAILURE") AND \
    results.images.name="gcr.io/my-project/my-image"

如需查询带有标记 "prod" 的所有构建,请运行以下命令:

tags="prod"

要查询标记为已验证的构建,请运行以下命令:

options.requested_verify_option="VERIFIED"

要查询来自 Cloud Storage 源代码(而不是 Cloud Source Repository)的构建,请运行以下命令:

source.storage_source.bucket!=""

要查询具有给定结果摘要的构建,请运行以下命令:

results.images.digest="sha256:6c7147fe4c813845ac2a9aa6f937bb272b68784f647c4f64c7325723c7245c88"

要查询在特定时间之后开始并在特定时间(UTC 时区)之前结束的构建,请运行以下命令:

create_time>"2016-10-12T18:43:49+00:00" AND finish_time<"2016-10-13T18:43:49+00:00"

使用标记过滤构建结果

可以在配置文件中使用标记,这样您就可以将构建分组并过滤构建。您可以在标记中指定字符串,例如 "prod""test"

标记具有以下限制:

  • 每个标记的字符限制为 128 个字符
  • 可以为每个构建定义最多 64 个标记
  • 标记可以在字符串中任意位置包含字母、数字和下划线。
  • 标记可以在任何位置(字符串的第一个位置除外)包含句点和连字符。

要在构建中添加标记,请执行以下操作:

  1. 在构建配置文件中,添加 tags 字段:

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/cb-demo-img', '.' ]
    images:
    - 'gcr.io/$PROJECT_ID/cb-demo-img'
    tags:
    - 'test1'
    - 'test2'
    
  2. 如需查看集群中已标记的构建,请使用 gcloud builds list 中的 --filter 选项。您可以通过指定单个标记或多个标记来过滤构建。

    • 如需按某个标记过滤构建,请将该标记指定为 tags 字段中的字符串。以下命令列出标记有 'test1' 的所有构建:

       gcloud builds list --filter "tags='test1'"
      
    • 如需按多个标记过滤构建,请使用“AND”,“OR”或“NOT”列出标记。以下命令列出标记有 'test1''test2' 且标记有 'test3' 的所有构建:

       gcloud builds list --filter "tags=('test1' OR 'test2') AND 'test3'"
      

    运行以下命令后,您会看到类似于以下内容的输出:

    ID                                    CREATE_TIME                DURATION  SOURCE                                                                             IMAGES                                 STATUS
    d33a9895-...                          ...                        1M45S     gs://...                                                                           gcr.io/...                             SUCCESS
    

查看构建触发器的构建结果

Cloud Build 信息中心简要介绍每个构建触发器的最新构建。

信息中心按卡片进行组织,其中每张卡片与代码库中的构建触发器相关联。如果一个代码库中创建了多个触发器,则会有多张卡片。这些卡片按照您的代码库名称加上触发器名称的字母顺序排列。您还可以将任意卡片固定到页面顶部,方法是将鼠标悬停在卡片右侧,然后按照下面的例子所示点击置顶图标:

信息中心上示例卡片的屏幕截图

卡片的标题是最新的构建结果,例如成功失败。代码库和触发器的名称列在最新构建结果之后。在标题下方,卡片汇总了与您的最新构建相关的结果。

查看信息中心

如果您已设置构建触发器,则系统会填充 Cloud Build 信息中心。如需详细了解如何设置构建触发器,请参阅创建和管理构建触发器

如需查看 Cloud Build 信息中心,请执行以下操作:

  1. 转到 Cloud Build 信息中心页面:

    打开 Cloud Build 信息中心页面

  2. 从下拉菜单中选择您的项目。

您将看到 Cloud Build 信息中心列出了构建触发器的最新构建。

Cloud Build 信息中心会显示以下信息:

  • 最新构建:您最近一次构建的日期和时间。

  • 持续时间:最近一次构建的持续时间,格式为 HH:MM:SS

  • 来源:指向已关联的源代码库的链接。您的源代码库可以是 Cloud Source Repository、GitHub 代码库或 Bitbucket 代码库。

  • 提交:指向用于您的构建的提交的链接。

  • 失败步骤:导致构建失败的失败步骤(如果您的最新构建失败)。

    如果您的最新构建失败,失败步骤将链接到构建日志中造成失败的步骤。

  • 构建记录:一个条形图,显示最近 20 次构建的构建时长。您可以将鼠标悬停在条形图中的每个条上,查看每个单独构建的信息。

  • 平均持续时间:最近 20 次构建的平均运行时间,不包括仍在运行的构建。

    如果构建时间的平均时长超过 10 分钟,并且您为构建指定的机器类型E2_MEDIUME2_HIGHCPU_8N1_HIGHCPU_8,则您会看到提高速度按钮。您可以点击提高速度来查看有关如何提高构建速度的建议。如需了解详情,请参阅加速构建的最佳做法

  • 成功 - 失败百分比:最近 20 次构建的平均成功/失败比率。

过滤卡片

如需过滤信息中心内的卡片,请点击 Cloud Build 信息中心页面顶部的过滤触发器选项:

过滤触发器提示屏幕截图

您可以按以下方式过滤卡片:

  • 触发器来源:源代码库的名称。
  • 触发器名称:触发器的名称。
  • 触发器说明:触发器说明。

后续步骤