运行构建时,Cloud Build 会收集并存储构建日志。本页面介绍了如何存储、查看和删除构建日志。
选择要将构建日志发送到何处
您可以配置 Cloud Build 将构建日志发送到 Cloud Storage 中的存储分区、Cloud Logging 中的存储分区,或同时发送到这两个存储分区。
如果您想控制存储的 build 日志的保留期限,请将其发送到 Cloud Logging。Cloud Logging 还提供了更多选项,可用于在存储分区中搜索特定 build 日志。
在某些情况下,在生成 build 日志和 Logging 接收该日志之间会存在延迟。将构建日志发送到 Cloud Storage 中的存储分区可能会缩短延迟时间。
您可以使用 Cloud Storage 和 Logging 将日志存储在 Google 创建的默认存储分区或用户创建的自定义存储分区中。您可以查看存储在默认存储分区中的日志,但无法更改存储分区的任何设置。如果您需要完全控制用于存储构建日志的存储分区,请将日志发送到用户创建的存储分区。
将构建日志存储在默认存储分区中
Cloud Logging 和 Cloud Storage 都有默认存储分区,您可以将构建日志存储在其中。这些存储分区由 Google 创建并拥有,可以接收来自多个区域的日志。如需将 build 日志发送到其中一个存储分区,请使用以下某个值配置 build 配置文件的 LoggingMode
:
GCS_ONLY
:日志存储在默认的 Cloud Storage 存储分区中。CLOUD_LOGGING_ONLY
:日志存储在默认的 Logging 存储分区中。LEGACY
:日志会存储在两个默认存储分区中。
默认的 Logging 存储分区对存储的日志采用 30 天的保留政策。如需为存储在“日志记录”中的构建日志设置自定义保留政策,请将构建日志存储在自定义存储分区中。
默认的 Cloud Storage 存储分区没有保留政策。
将构建日志存储在用户拥有且因区域而异的 Cloud Storage 存储分区中
如果您将构建日志发送到默认的 Cloud Storage 存储分区,Cloud Build 会将其存储在 Google 指定的区域中,该区域可能与您运行构建的位置不同。不过,您也可以配置 build,以便 Cloud Build 将 build 日志发送到与您运行 build 的区域相同的用户拥有的 Cloud Storage 存储分区。通过此配置,您可以更好地控制 build 日志数据的位置,这有助于您遵守数据驻留要求。
授予 IAM 权限:
如果您的 Cloud Storage 存储分区与 Cloud Build 位于同一 Google Cloud 项目中,并且您使用的是 Cloud Build 旧版服务账号,则默认情况下,该服务账号具有必要的 IAM 权限。您无需授予任何其他权限。否则,请执行以下操作:
如需获得将 build 日志存储在用户拥有且因地区而异的存储分区中所需的权限,请让您的管理员为您授予用于 build 的服务账号的 Storage Admin (roles/storage.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
配置特定于区域的 Cloud Storage 存储分区:
在构建配置文件中,添加
defaultLogsBucketBehavior
选项并将其值设置为REGIONAL_USER_OWNED_BUCKET
:steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ] options: defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "us-central1-docker.pkg.dev/myproject/myrepo/myimage", "." ] } ], "options": { "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET" } }
-
运行构建时,Cloud Build 会在您执行构建的区域中创建新存储分区,然后将构建日志存储在此存储分区中。只要
REGIONAL_USER_OWNED_BUCKET
处于活动状态,同一项目和区域中的后续 build 将使用现有存储分区。此存储分区归用户所有,因此您可以将其配置为用户创建的存储分区。
如果您设置了 REGIONAL_USER_OWNED_BUCKET
选项,然后在多个区域创建 build,Cloud Build 会为 build 日志创建多个存储分区。
特定于区域的默认 Cloud Storage 存储分区没有保留政策。不过,您可以通过配置对象生命周期规则,自动从存储分区中删除 build 日志。
将构建日志存储在用户创建的存储分区中
借助用户创建的存储分区,您可以更好地控制日志存储分区的管理和配置。
将构建日志存储在用户创建的 Cloud Logging 存储分区中
借助用户创建的 Logging 存储分区,您可以调整存储的构建日志的保留期限。如需将构建日志存储在 Logging 中的用户创建的存储分区中,请执行以下操作:
授予 IAM 权限:
如需获得将 build 日志存储在用户创建的 Cloud Logging 存储分区中所需的权限,请让您的管理员为您授予项目的 Logs Configuration Writer (roles/logging.configWriter
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
配置 Logging 存储分区:
创建存储分区,然后为保留期限字段设置值。
创建接收器,以将 build 日志路由到新的存储分区:
为接收器的 build 包含项过滤条件输入以下内容:
logName = "projects/
PROJECT_ID /logs/cloudbuild"将 PROJECT-ID 替换为您的 Google Cloud 项目 ID。
(可选)如需阻止日志进入默认的 Logging 存储分区,请按照停止在日志存储分区中存储日志条目中的示例操作。
将构建日志存储在用户创建的 Cloud Storage 存储分区中
如需将构建日志存储在用户创建的 Cloud Storage 存储分区中,请执行以下操作:
授予 IAM 权限:
如果您的 Cloud Storage 存储分区与 Cloud Build 位于同一 Google Cloud 项目中,并且您使用的是 Cloud Build 旧版服务账号,则默认情况下,Cloud Build 旧版服务账号具有必要的 IAM 权限。您无需授予任何其他权限。否则,请执行以下操作:
如需获得将 build 日志存储在用户创建的 Cloud Storage 存储分区中所需的权限,请让您的管理员为您授予用于 build 的服务账号的 Storage Admin (roles/storage.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
配置 Cloud Storage 存储分区:
在您的 Google Cloud 项目中,创建一个 Cloud Storage 存储分区,并为其不设置保留政策,以存储构建日志。
在构建配置文件中,添加一个
logsBucket
字段,其指向您为存储构建日志而创建的 Cloud Storage 存储分区。以下示例构建配置文件包含构建容器映像并将构建日志存储在名为mylogsbucket
的存储分区中的说明:steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.' ] logsBucket: 'gs://mylogsbucket' options: logging: GCS_ONLY
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "us-east1-docker.pkg.dev/myproject/myimage", "." ] } ], "logsBucket": "gs://mylogsbucket", "options": { "logging": "GCS_ONLY" } }
构建完成后,Cloud Build 会将日志存储在您在构建配置文件中指定的 Cloud Storage 存储分区中。
日志设置之间的优先级
如果您在 logsBucket
中定义了用户创建的 Cloud Storage 存储分区,Cloud Build 会将构建日志发送到用户创建的存储分区,而不是默认的 Cloud Storage 存储分区。
如果您要向现有 build 配置文件添加 defaultLogsBucketBehavior
选项,并且之前已配置 logging
或 logsBucket
选项,我们建议您删除这些设置,以免设置之间发生冲突。具体而言,如果您配置了以下内容,defaultLogsBucketBehavior
将无法正常运行:
logging: CLOUD_LOGGING_ONLY
以便在 Cloud Logging 中存储构建日志。logging: NONE
关闭日志记录。
如果您在运行构建时未在构建配置文件中设置任何日志记录选项,Cloud Build 会设置 logging: LEGACY
并将构建日志存储在默认的 Cloud Storage 存储分区中。将 defaultLogsBucketBehavior
设置为 REGIONAL_USER_OWNED_BUCKET
会替换 logging: LEGACY
。
查看构建日志
如需查看 build 日志,请执行以下操作:
授予 IAM 权限:
如需获得在 Cloud Storage 或 Logging 中查看构建日志所需的权限,请让您的管理员为您授予用于构建的服务账号的以下 IAM 角色:
-
在用户创建或用户拥有的 Cloud Storage 存储分区中查看构建日志:
-
Storage Object Viewer (
roles/storage.objectViewer
) - 想要查看 build 日志的正文 -
Logs View Accessor (
roles/logging.viewAccessor
) - 想要查看 build 日志的正文
-
Storage Object Viewer (
-
查看默认 Cloud Storage 存储分区中的构建日志:
Viewer (
roles/viewer
) - 配置了 build 的项目 -
在“日志记录”中查看构建日志:
Logs Viewer (
roles/logging.viewer
) - 想要查看构建日志的正文
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
在 Google Cloud中查看构建日志:
打开 Google Cloud 控制台中的 Cloud Build 页面。
选择您的项目,然后点击打开。
在区域下拉菜单中,选择 build 的区域。
在构建记录页面中,选择特定构建。
在构建详情页面的步骤下,点击构建摘要以查看整个构建的构建日志,或选择某个构建步骤查看该步骤的构建日志。
如果您的日志存储在 Logging 中,请在构建日志面板中,点击
图标以在 Logs Explorer 中查看日志。
运行 gcloud builds log
命令,其中 build-id 是您要获取构建日志的构建的 ID。运行 gcloud builds submit
时将在构建提交过程结束时显示构建 ID,或者在运行 gcloud builds list
时将显示在 ID 列中。
gcloud builds log build-id
在 GitHub 和 GitHub Enterprise 中查看 build 日志:
如果您创建了 GitHub 或 GitHub Enterprise 触发器,并将 --include-logs-with-status
指定为选项,则可以在 GitHub 和 GitHub Enterprise 中查看构建日志。
如需在 GitHub 和 GitHub Enterprise 中查看 build 日志,请执行以下操作:
前往与触发器关联的代码库。
前往提交列表。
找到您要查看其构建日志的提交所在的行。
点击提交所在行的结果图标。
您会看到与您的提交关联的检查列表。
点击要查看 build 日志对应的行中的详情。
您会看到与提交关联的摘要页面。如果您使用
--include-logs-with-status
标志创建了触发器,则会在该页面的详情部分下看到构建日志。
删除 build 日志和存储分区
如需获得删除 Cloud Storage 中的 build 日志和存储分区所需的权限,请让您的管理员为您授予用于 build 的服务账号的以下 IAM 角色:
-
删除用户创建或用户拥有的 Cloud Storage 存储分区中的构建日志:
Storage Admin (
roles/storage.admin
) - 要删除构建日志的用户或服务账号 -
删除用户创建或用户拥有的 Cloud Storage 存储分区:
Storage Admin (
roles/storage.admin
) - 要删除存储分区的用户或服务账号 -
删除用户创建的 Logging 存储分区:
Logs Configuration Writer (
roles/logging.configWriter
) - 您的项目
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
如需删除用户创建或用户拥有的 Cloud Storage 存储分区中的构建日志,请按照 Cloud Storage 文档中的删除对象部分中的说明操作。
如需删除用户创建或用户拥有的 Cloud Storage 存储分区,请按照 Cloud Storage 文档中的删除存储分区部分中的说明操作。
如需删除用户创建的 Logging 存储分区,请按照 Logging 文档中的删除存储分区部分中的说明操作。
后续步骤
- 了解 Cloud Build 创建的审核日志。
- 了解如何查看构建结果。
- 详细了解 Cloud Build IAM 权限。