运行构建时,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。
后续步骤
- 了解如何存储、查看和删除构建日志
- 了解 Cloud Build 创建的审核日志。
- 了解如何查看构建结果。
- 详细了解 Cloud Build IAM 权限。