构建日志存储选项

运行构建时,Cloud Build 会收集构建日志并将其存储在日志存储桶中。根据 build 配置文件设置,您的 build 日志会存储在 Cloud Logging 存储桶、Cloud Storage 存储桶或这两个位置。您还可以配置包含日志的 Logging 或 Cloud Storage 存储桶的类型。存储桶的位置和类型会影响您分析构建日志的能力以及您对存储桶设置的控制程度。

概览

设置 build 配置文件时,请考虑以下事项:

  • 如果您想控制存储的构建日志的保留期限,请将其发送到 Logging。与 Cloud Storage 相比,Logging 中的日志查看器还提供了更多选项,可用于在存储桶中搜索特定构建日志。不过,当您使用 Logging 时,在生成构建日志和 Logging 收到构建日志之间可能会有延迟。

  • 如果您希望缩短从生成构建日志到在 Cloud Storage 中提供该日志之间的延迟时间,请将构建日志发送到 Cloud Storage 中的存储桶。

存储桶的所有权也会影响您与存储的构建日志的交互方式。例如,用户拥有的存储桶可让您配置存储桶的设置,而 Google Cloud拥有的存储桶由 Google Cloud创建,用户无法更改。Logging 和 Cloud Storage 提供了多个选项,可用于配置接收构建日志的存储桶类型。

存储桶位置

在构建配置文件中设置 logging 字段,以确定构建日志的发送位置:

  • GCS_ONLY:构建日志会发送到 Cloud Storage 存储桶。
  • CLOUD_LOGGING_ONLY:构建日志会发送到 Logging 存储桶。
  • LEGACY:构建日志会发送到这两个位置的存储桶。如果未定义 logging,Cloud Build 会使用此值。
  • NONE:不存储构建日志。

如果您将构建日志发送到 Logging,请参阅 Cloud Logging 路由配置,了解 Logging 存储桶选项。如果您将构建日志发送到 Cloud Storage,请参阅以下部分,了解可用的 Cloud Storage 存储桶。存储桶所有权注意事项部分介绍了基于存储桶所有权的存储桶优势和注意事项,无论存储桶位置如何。

Cloud Storage 中的存储桶选项

如果您的构建日志发送到 Cloud Storage,则 Cloud Build 会评估构建配置文件中的 logsBucket 和 defaultLogsBucketBehavior 字段,以确定接收构建日志的 Cloud Storage 存储桶类型。

logsBucket 字段可以包含任何类型的存储桶。如果定义了 logsBucket,则无论 defaultLogsBucketBehavior 值如何,日志始终会发送到 Cloud Storage 中的该存储桶。如果未定义 logsBucket,则 defaultLogsBucketBehavior 的值将按如下方式使用:

  • REGIONAL_USER_OWNED_BUCKET:构建日志会发送到 Cloud Storage 中由 Cloud Build 创建且归用户所有的存储桶。此存储桶位于用户的项目中,并使用与 build 相同的区域。
  • LEGACY_BUCKET:构建日志会发送到 Google Cloud拥有的项目中由 Cloud Build 创建并由 Google Cloud拥有的存储桶。
  • 无值:构建日志会发送到 Cloud Storage 中由 Cloud Build 创建且归用户所有的存储桶。此存储桶位于用户的项目中,并使用与 build 相同的区域。如果创建此存储桶失败,则构建日志会发送到由 Google Cloud拥有的项目中由 Cloud Build 创建且由Google Cloud拥有的存储桶。

通过 Dockerfile 构建时的日志存储

如需在通过 Dockerfile 构建时设置构建日志存储,请在运行 gcloud builds submit 时添加 default-buckets-behavior 标志值之一:

  • regional-user-owned-bucket:构建日志会发送到 Cloud Storage 中由 Cloud Build 创建且归用户所有的存储桶。此存储桶位于用户的项目中,并使用与 build 相同的区域。
  • legacy-bucket:构建日志会发送到 Google Cloud拥有的项目中由 Cloud Build 创建并由 Google Cloud拥有的存储桶。此值与将此字段留空的效果相同。

存储桶所有权的注意事项

无论您使用的是 Cloud Storage 还是 Logging,我们都建议您将构建日志发送到用户拥有的存储桶。这可以是用户创建的存储桶(例如,如果您将 logsBucket 设置为您创建的存储桶),也可以是 Cloud Build 创建但归用户所有的存储桶(例如,如果您为区域级用户拥有的存储桶配置了设置)。这样,您就可以随时修改存储桶的某些属性并查看存储桶中的日志。由于 Google Cloud拥有的存储桶位于Google Cloud拥有的项目中,因此无法查看或修改其存储桶,并且只能在构建详情页面的构建日志部分中查看其构建日志。

一般来说,用户创建的存储桶在创建期间和创建后配置存储桶设置方面提供了最大的灵活性。不过,在这种情况下,您必须始终确保用户创建的存储桶符合构建的需求。在某些情况下(例如管理存储桶区域),使用 Cloud Build 创建且归用户所有的存储桶可让您将构建日志发送到 Cloud Storage 中默认可用且始终与构建位于同一区域的存储桶。以下部分详细介绍了此应用场景:

存储桶区域注意事项

我们建议您将构建存储桶配置为与构建区域一致,因为此设置可能有助于您遵守数据驻留要求。如果您想以这种方式对齐区域,请考虑以下事项:

  • Logging 和 Cloud Storage 中用户创建的存储桶使用在创建存储桶期间定义的区域。如果您将用户创建的存储桶设置为 build 的 logging 值,请确保其区域与 build 区域匹配。

  • 如果您将构建日志配置为使用 Cloud Storage 中用户拥有的区域级存储桶,则构建日志始终会发送到与构建位于同一区域的存储桶。

  • Google Cloud拥有的存储桶设置为 Google Cloud定义的区域。因此,此区域可能并不总是与 build 的区域一致。

将 defaultLogsBucketBehavior 添加到现有 build 配置文件

如果您要将 defaultLogsBucketBehavior 选项添加到之前配置了 logging 或 logsBucket 的现有 build 配置文件中,我们建议您评估所有日志存储设置,以确保日志按预期存储。如果满足以下任一条件,Cloud Build 会忽略 defaultLogsBucketBehavior:

  • logging 设置为 CLOUD_LOGGING_ONLY 或 NONE。
  • logging 设置为 GCS_ONLY 或 LEGACY,并且 logsBucket 已定义。

如果您在运行构建时未在构建配置文件中定义日志存储字段,则 Cloud Build 会将 logging 设置为 LEGACY。

后续步骤