构建日志存储选项

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

概览

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

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

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

存储桶的所有权还会影响您与存储的 build 日志的互动方式。例如,用户拥有的存储桶允许您配置存储桶的设置,而 Google Cloud拥有的存储桶由 Google Cloud创建,用户无法更改。日志记录和 Cloud Storage 提供了多种选项,用于配置接收 build 日志的存储桶类型。

存储桶位置

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

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

如果您将 build 日志发送到 Logging,请参阅 Cloud Logging 路由配置,了解 Logging 存储桶选项。如果您将 build 日志发送到 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所有的存储桶。此值与将此字段留为未定义相同。

从 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拥有的项目中,因此无法查看或修改这些存储分区,并且只能在构建详情页面的构建日志部分中查看其构建日志。

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

存储桶区域注意事项

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

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

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

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

向现有 build 配置文件添加 defaultLogsBucketBehavior

如果您要向之前已配置 logging 或 logsBucket 的现有 build 配置文件添加 defaultLogsBucketBehavior 选项,建议您评估所有日志存储设置,以确保日志按预期存储。如果存在以下任一情况,Cloud Build 会忽略 defaultLogsBucketBehavior:

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

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

后续步骤