存储和管理构建日志

运行构建时,Cloud Build 会收集并存储构建日志。本页面介绍了如何存储、查看和删除构建日志。

选择存储构建日志的位置

您可以配置 Cloud Build 以将构建日志存储在 Cloud Logging 或 Cloud Storage 中,方法是在 Cloud Build 配置文件中添加 logging 字段。如果您未在构建配置文件中指定 logging 字段,则 Cloud Build 会将构建日志同时存储在 Logging 和 Cloud Storage 中。

以下步骤仅将构建日志存储在 Logging 中:

  1. 在构建配置文件中,将 logging 的值设置为 CLOUD_LOGGING_ONLY

    YAML

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

    JSON

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

将构建日志存储在 Google 创建的默认存储桶中

默认情况下,Cloud Build 会将构建日志存储在 Google 创建的 Cloud Storage 存储桶中。您可以查看存储在 Google 创建的 Cloud Storage 存储桶中的构建日志,但无法对其执行任何其他更改。如果您需要完全控制日志存储桶,请将日志存储在用户创建的 Cloud Storage 存储桶中。

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

IAM 权限

如需将构建日志存储在您自己的 Cloud Storage 存储桶中,您必须先向 Cloud Build 服务账号用户指定的服务账号授予必要的 IAM 权限:

  • 如果您的 Cloud Storage 存储桶和 Cloud Build 位于同一 Google Cloud 项目中,并且您使用的是 Cloud Build 服务帐号,则您的 Cloud Build 服务帐号默认具有必要的 IAM 权限。您无需授予任何其他权限。

  • 如果您的 Cloud Storage 存储桶和 Cloud Build 位于同一 Google Cloud 项目中,并且您使用的是用户指定的服务帐号,请向该服务帐号授予 Storage Admin 角色。如需了解如何向服务账号授予角色,请参阅授予项目的角色

  • 如果您的 Cloud Storage 存储桶和 Cloud Build 位于不同的 Google Cloud 项目中,请将 Storage Admin 角色授予 Cloud Build 服务帐号

    1. 打开 IAM 页面:

      打开 IAM 页面

    2. 选择您要使用 Cloud Build 在其中运行构建的项目。

    3. 在权限表中,找到以 @cloudbuild.gserviceaccount.com 结尾的电子邮件地址,并记下该地址。这是您的 Cloud Build 服务账号。

    4. 打开 Cloud Storage 存储桶所在的项目中的 IAM 页面:

      打开 IAM 页面

    5. 点击授予访问权限

    6. 输入 Cloud Build 服务账号的电子邮件地址。

    7. 选择 Cloud Storage > Storage Admin

    8. 点击保存

要指定 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 Build 将构建日志存储在 Google 指定的区域,该区域可能不同于您运行构建的位置。借助 defaultLogsBucketBehavior 选项,您可以将 Cloud Build 配置为使用您自己的项目中以及与构建位于同一区域的默认日志存储桶。此配置可让您更好地控制日志数据位置,从而帮助您遵循数据驻留要求。

在您自己的项目中存储日志会产生费用。如需详细了解价格信息,请参阅 Cloud Storage 价格

将 Cloud Build 配置为使用用户拥有的区域化日志

  1. 授予必要的 IAM 权限。

    • 如果您使用的是 Cloud Build 服务帐号,默认情况下,您的 Cloud Build 服务帐号拥有必要的 IAM 权限。您无需授予任何其他权限。

    • 如果您使用用户指定的服务账号,请向服务账号授予 Storage Admin 角色。如需了解如何向服务帐号授予角色,请参阅授予项目的角色

  2. 在构建配置中,添加 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"
        }
    }
    
  3. 使用 build 配置文件来通过命令行、API触发器启动构建。

    当您运行构建时,Cloud Build 会在您执行构建的区域创建新的日志存储桶,然后将构建日志存储到此存储桶中。同一项目和区域的后续构建将默认使用现有存储桶。

如果您设置了 defaultLogsBucketBehavior 选项,然后在多个区域中创建构建,Cloud Build 会为您的构建日志创建多个存储分区。

存储在您自己的项目中的区域化构建日志没有保留政策。此设置无法更改。

日志设置之间的优先级

如果您要将 defaultLogsBucketBehavior 选项添加到现有 build 配置文件中,并且之前已配置 logginglogsBucket 选项,我们建议您删除这些设置,以免设置之间发生冲突。

具体来说,如果您配置了以下配置,defaultLogsBucketBehavior 将无法运行:

  • logging: CLOUD_LOGGING_ONLY,用于在 Cloud Logging 中存储构建日志。
  • logging: NONE,用于关闭日志记录。

如果您运行的构建未在构建配置中设置日志记录选项,Cloud Build 会设置 logging: LEGACY 并将日志存储在 Google 创建的默认 Cloud Storage 存储桶中。如果您添加 defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET,此选项会替换 logging: LEGACY

查看构建日志

IAM 权限

  • 如果您的构建日志位于 Logging 中,请向要查看构建日志的主账号授予针对在其中配置构建的项目的 Logs Viewer 角色:

    1. 打开 IAM 页面:

      打开 IAM 页面

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

    3. 在权限表中,找到主账号的电子邮件 ID,然后点击铅笔图标。

    4. 选择 Logging > Logs Viewer 角色。

    5. 点击保存

  • 如果构建日志位于Google 创建的默认 Cloud Storage 存储桶中,请将其中配置了构建的项目的 Project Viewer 角色授予想要查看构建日志的主账号:

    1. 打开 IAM 页面:

      打开 IAM 页面

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

    3. 在权限表中,找到主账号的电子邮件 ID,然后点击铅笔图标。

    4. 选择 Project > Viewer 角色。

    5. 点击保存

    如果您的构建日志位于用户创建或用户拥有的 Cloud Storage 存储桶中,请向要查看构建日志的主账号授予 Storage Object Viewer 角色:

    1. 打开 IAM 页面:

      打开 IAM 页面

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

    3. 在权限表中,找到主账号的电子邮件 ID,然后点击铅笔图标。

    4. 选择 Cloud Storage > Storage Object Viewer 角色。

    5. 点击保存

如需在 Cloud Build 中查看构建日志,请执行以下操作

控制台

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

    打开 Cloud Build 页面

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

  3. 区域下拉菜单中,为您的 build 选择区域

  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 中查看构建日志,请执行以下操作

如果您创建了 GitHubGitHub Enterprise 触发器并将 --include-logs-with-status 指定为选项,那么就可以在 GitHub 和 GitHub Enterprise 中查看构建日志。

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

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

  2. 找到您的提交内容列表。

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

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

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

  5. 点击要查看其构建日志的行的详细信息

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

删除构建日志

您不能删除位于 Google 创建的日志存储桶中的构建日志。

如需删除位于用户创建的日志存储桶中的构建日志,请执行以下操作:

  1. Storage Object Admin 角色授予要删除日志的用户或服务账号。

  2. 按照删除对象中关于删除 Cloud Storage 对象的说明,来删除构建日志。

如需删除用户创建的日志存储桶,请执行以下操作:

  1. Storage Admin 角色授予要删除日志存储桶的用户或服务账号。

  2. 按照删除存储桶中关于删除存储桶的说明,来删除日志存储桶。

后续步骤