存储和管理构建日志

运行构建时,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 存储桶中,您必须先向 您需要为其服务账号授予必要的 IAM 权限 使用以下代码:

  • 如果您的 Cloud Storage 存储桶和 Cloud Build 位于 使用旧版 Cloud Build 您的 Cloud Build 服务账号 必需的 IAM 权限。您不必授予 任何其他权限

  • 在任何其他情况下,请将 Storage Admin 角色授予 用于构建的:

    1. 打开 Cloud Storage 存储分区所在的项目中的 IAM 页面:

      打开 IAM 页面

    2. 点击授予访问权限

    3. 输入服务账号的电子邮件地址。

    4. 选择 Cloud Storage > Storage Admin

    5. 点击保存

要指定 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. 使用构建配置文件通过命令行、API触发器启动构建。

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

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

存储在您自己的项目中的区域化 build 日志没有保留政策。此设置不可更改。

日志设置之间的优先级

如果您要向现有构建配置文件添加 defaultLogsBucketBehavior 选项,并且之前配置了 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 中查看构建日志 企业

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

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

  2. 导航到您的提交列表。

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

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

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

  5. 点击要查看 build 的行的详细信息 日志。

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

删除构建日志

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

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

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

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

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

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

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

后续步骤