存储和管理构建日志

运行构建时,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. 在 build 配置中,添加 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 选项,然后在多个区域中创建 build,Cloud Build 会为 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. 按照删除存储分区中关于删除存储分区的说明,来删除日志存储分区。

后续步骤