存储和查看构建日志

设置构建配置文件,以便将构建日志存储在日志存储分区中,这样您就可以使用 Cloud Logging 和 Cloud Storage 工具对它们进行分组和分析。配置构建日志存储空间可让您更好地控制日志的存储和分析。如果您将构建日志存储设置 保留为未定义,则 Cloud Build 会将它们存储在 Google Google Cloud-拥有的 存储桶中,并且构建日志分析选项较少。

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

准备工作

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

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

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

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

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

授予 IAM 权限

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

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

配置 Logging 存储桶

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

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

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

      logName = "projects/PROJECT_ID/logs/cloudbuild"
      

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

    2. (可选)如需阻止构建日志进入默认 Logging 存储桶,请按照 停止在日志存储桶中存储日志条目中的示例操作。

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

如需将构建日志存储在用户创建的 Cloud Storage 存储桶中,请执行以下操作:

授予 IAM 权限

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

如需获得将构建日志存储在用户创建的 Cloud Storage 存储桶中所需的权限,请让您的管理员为您授予用于构建的服务帐号的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 存储桶中。

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

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

授予 IAM 权限

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

如需获得将构建日志存储在用户拥有且特定于区域的存储桶中所需的权限,请让您的管理员为您授予用于构建的服务帐号的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 处于活跃状态,同一项目和区域中的后续构建都将使用现有存储桶。 此存储桶归用户所有,因此您可以像配置用户创建的存储桶一样对其进行配置。

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

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

查看构建日志

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

授予 IAM 权限

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

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

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

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

在以下位置查看构建日志 Google Cloud

控制台

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

    打开 Cloud Build 页面

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

  3. 区域 下拉菜单中,选择 区域

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

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

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

gcloud

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

gcloud builds log build-id

在 GitHub 和 GitHub Enterprise 中查看构建日志

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

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

  1. 导航到与触发器关联的代码库。

  2. 导航到提交列表。

  3. 找到要查看构建日志的提交所在的行。

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

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

  5. 点击要查看构建日志的行对应的详情

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

删除构建日志和存储分区

如需获得在 Cloud Storage 中删除构建日志和存储分区所需的权限,请让您的管理员为您授予用于构建的服务帐号的以下 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 文档中的删除存储桶中的说明操作。

后续步骤