存储和查看构建日志

设置构建配置文件,以将构建日志存储在日志存储分区中,以便您可以使用 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 创建了 GitHubGitHub 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 文档中删除存储桶中的说明进行操作。

后续步骤