存储和查看构建日志

设置构建配置文件,以将构建日志存储在日志存储分区中,以便您可以使用 Cloud Logging 和 Cloud Storage 工具对这些日志进行分组和分析。配置 build 日志存储可让您更好地控制日志的存储和分析。如果您未定义构建日志存储设置,Cloud Build 会将构建日志存储在 Google Cloud拥有的存储桶中,但这样一来,您可用于分析构建日志的选项就会减少。

本页面介绍了如何将构建日志存储在不同类型的存储分区中,以及如何查看和删除已存储的日志。

准备工作

确保您熟悉用于配置 build 日志存储空间的 build 配置文件选项,以及存储桶所有权对日志可访问性的影响。 如需了解详情,请参阅构建日志存储选项。

将构建日志存储在用户创建的存储分区中

通过用户创建的存储分区,您可以更好地控制存储分区的管理和配置。

将构建日志存储在用户创建的 Cloud Logging 存储桶中

借助用户创建的 Logging 存储分区,您可以调整所存储构建日志的保留期限。如需将构建日志存储在 Logging 中用户创建的存储桶中,请执行以下操作:

授予 IAM 权限:

如需获得将构建日志存储在用户创建的 Cloud Logging 存储桶中所需的权限,请让您的管理员为您授予账号或服务账号的 Logs Configuration Writer (roles/logging.configWriter) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

配置日志存储桶:

  1. 创建存储桶,并为保留期限字段设置值。

  2. 创建接收器,以将 build 日志路由到新存储桶:

    1. 为接收器的构建包含项过滤条件输入以下内容:

      logName = "projects/PROJECT_ID/logs/cloudbuild"
      

      请将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。

    2. (可选)如需防止构建日志进入默认的 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 存储桶:

  1. 在您的 Google Cloud 项目中,创建一个未设置保留政策的 Cloud Storage 存储桶以存储构建日志。

  2. 在构建配置文件中,添加一个 logsBucket 字段,其指向您为存储构建日志而创建的 Cloud Storage 存储桶。以下示例构建配置文件包含构建容器映像并将构建日志存储在名为 mylogsbucket 的存储桶中的说明:

    YAML

        steps:
        - name: 'gcr.io/cloud-builders/docker'
          args: [ 'build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.' ]
        logsBucket: 'gs://mylogsbucket'
        options:
          logging: GCS_ONLY
    

    JSON

        {
          "steps": [
           {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
               "build",
               "-t",
               "us-east1-docker.pkg.dev/myproject/myimage",
               "."
             ]
           }
           ],
           "logsBucket": "gs://mylogsbucket",
           "options": {
             "logging": "GCS_ONLY"
           }
        }
    
  3. 使用构建配置文件来使用命令行,API 或触发器启动构建。

构建完成后,Cloud Build 会将构建日志存储在您在构建配置文件中指定的 Cloud Storage 存储桶中。

将 build 日志存储在特定于区域的 Cloud Storage 存储分区中

您可以配置构建,以便 Cloud Build 将构建日志发送到与构建位于同一区域的用户自有 Cloud Storage 存储桶。使 build 和 build 日志存储桶的区域保持一致有助于您满足数据驻留要求。

授予 IAM 权限:

如果您的 Cloud Storage 存储桶与 Cloud Build 位于同一 Google Cloud 项目,并且您使用的是 Cloud Build 旧版服务账号,则该服务账号默认具有必要的 IAM 权限。您无需授予任何其他权限。否则,请执行以下操作:

如需获得将 build 日志存储在用户自有且特定于区域的存储桶中所需的权限,请让您的管理员为您授予用于 build 的服务账号的 Storage Admin (roles/storage.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

配置特定于区域的 Cloud Storage 存储桶:

  1. 在构建配置文件中,添加 defaultLogsBucketBehavior 选项并将其值设置为 REGIONAL_USER_OWNED_BUCKET:

    YAML

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
    options:
      defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
    

    JSON

    {
      "steps": [
        {
          "name": "gcr.io/cloud-builders/docker",
          "args": [
            "build",
            "-t",
            "us-central1-docker.pkg.dev/myproject/myrepo/myimage",
            "."
          ]
        }
        ],
        "options": {
          "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
        }
    }
    
  2. 使用构建配置文件来使用命令行,API 或触发器启动构建。

    运行构建时,Cloud Build 会在执行构建的区域中创建新存储桶,然后将构建日志存储在此存储桶中。只要 REGIONAL_USER_OWNED_BUCKET 处于有效状态,同一项目和区域中的后续 build 就会使用现有存储桶。 此存储桶归用户所有,因此您可以像配置用户创建的存储桶一样配置它。

    如果您设置了 REGIONAL_USER_OWNED_BUCKET 选项并在多个区域中创建 build,那么 Cloud Build 会为每个唯一区域创建一个 Cloud Storage 存储桶。

如果您需要使 build 的区域与日志存储桶保持一致,也可以使用用户创建的存储桶。在这种情况下,您可以选择具有相同区域的现有用户创建的存储桶,也可以创建一个。如果您想创建存储桶,请按照将 build 日志存储在用户创建的存储桶中中的步骤操作,并确保用户创建的存储桶与 build 位于同一区域。

查看构建日志

如需查看 build 日志,请执行以下操作:

授予 IAM 权限:

如需获得在 Cloud Storage 或 Logging 中查看 build 日志所需的权限,请让您的管理员为您授予用于 build 的服务账号的以下 IAM 角色:

  • 查看用户创建或拥有的 Cloud Storage 存储桶中的构建日志:
    • Storage Object Viewer (roles/storage.objectViewer) - 希望查看 build 日志的主账号
    • Logs View Accessor (roles/logging.viewAccessor) - 希望查看 build 日志的主账号
  • 查看默认 Cloud Storage 存储桶中的构建日志: Viewer (roles/viewer) - 配置了构建的项目
  • 在 Logging 中查看 build 日志:Logs Viewer (roles/logging.viewer) - 希望查看 build 日志的主账号

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

在 Google Cloud中查看 build 日志

控制台

  1. 在 Google Cloud 控制台中打开 Cloud Build 页面。

    打开 Cloud Build 页面

  2. 选择您的项目,然后点击打开。

  3. 在区域下拉菜单中,选择 build 的区域。

  4. 在构建历史记录页面中,选择特定构建。

  5. 在构建详情页面的步骤下,点击构建摘要以查看整个构建的构建日志,或选择某个构建步骤查看该步骤的构建日志。

  6. 如果您的构建日志存储在 Logging 中,请在构建日志面板中点击 图标,以在Logs Explorer中查看日志。

gcloud

运行 gcloud builds log 命令,其中 build-id 是您要获取构建日志的 build 的 ID。运行 gcloud builds submit 时将在构建提交过程结束时显示构建 ID,或者在运行 gcloud builds list 时将显示在 ID 列中。

gcloud builds log build-id

在 GitHub 和 GitHub Enterprise 中查看 build 日志

如果您使用 gcloud CLI 或 Cloud Build API 创建了 GitHub 或 GitHub Enterprise 触发器,并指定了 --include-logs-with-status 作为选项,那么您可以在 GitHub 和 GitHub Enterprise 中查看 build 日志。

如需在 GitHub 和 GitHub Enterprise 中查看 build 日志,请执行以下操作:

  1. 前往与触发器关联的代码库。

  2. 前往提交列表。

  3. 找到您要查看相应提交的 build 日志的行。

  4. 点击相应提交所在行中的结果图标。

    您会看到与您的提交关联的检查列表。

  5. 点击要查看 build 日志的行所对应的详情。

    您会看到与提交关联的摘要页面。 如果您已使用 --include-logs-with-status 标志创建触发器,则会在页面的详情部分下看到 build 日志。

删除 build 日志和存储分区

如需获得删除 Cloud Storage 中的 build 日志和存储分区所需的权限,请让管理员向您授予用于 build 的服务账号的以下 IAM 角色:

  • 删除用户创建或拥有的 Cloud Storage 存储桶中的构建日志: Storage Admin (roles/storage.admin) - 要删除构建日志的用户或服务账号
  • 删除用户创建或拥有的 Cloud Storage 存储桶: Storage Admin (roles/storage.admin) - 要删除存储分区的用户或服务账号
  • 删除用户创建的日志记录存储桶: Logs Configuration Writer (roles/logging.configWriter) - 您的项目

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需删除用户创建或拥有的 Cloud Storage 存储桶中的构建日志,请按照 Cloud Storage 文档中删除对象中的说明进行操作。

如需删除用户创建或拥有的 Cloud Storage 存储桶,请按照 Cloud Storage 文档中删除存储分区中的说明进行操作。

如需删除用户创建的 Logging 存储桶,请按照 Logging 文档中删除存储桶中的说明进行操作。

后续步骤