构建日志存储选项

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

概览

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

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

  • 如果您希望缩短构建日志生成和 Logging 接收日志之间的延迟时间,请将构建日志发送到 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 会评估构建配置文件中的 logsBucketdefaultLogsBucketBehavior 字段,以确定接收构建日志的 Cloud Storage 存储桶的类型。

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

  • REGIONAL_USER_OWNED_BUCKET:构建日志会发送到 Cloud Build 在 Cloud Storage 中创建并由用户拥有的存储桶。 此存储桶位于用户的项目中,并且与构建使用相同的区域。
  • LEGACY_BUCKET:构建日志会发送到 Cloud Build 在 Cloud Build 拥有的项目中创建并由 Cloud Build 拥有的存储桶。 Google CloudGoogle Cloud此值与将此字段留空相同。

从 Dockerfile 构建时的日志存储

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

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

存储桶所有权注意事项

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

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

存储桶区域注意事项

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

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

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

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

向现有构建配置文件添加 defaultLogsBucketBehavior

如果您要向现有构建配置文件添加 defaultLogsBucketBehavior 选项,并且之前已在该文件中配置了 logginglogsBucket,我们建议您评估所有日志存储设置,以确保日志按预期存储。如果满足以下任一条件,Cloud Build 会忽略 defaultLogsBucketBehavior

  • logging 设置为 CLOUD_LOGGING_ONLYNONE
  • logging 设置为 GCS_ONLYLEGACY,并且定义了 logsBucket

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

后续步骤