【问题标题】:Google Cloud Build - Summary status shows FAILURE, all steps succededGoogle Cloud Build - 摘要状态显示失败,所有步骤都成功
【发布时间】:2021-08-10 08:06:44
【问题描述】:

我已经设置了一个 Google Cloud Build 管道,它将从 Dockerfile 构建一个 docker 映像,测试该映像并将该映像推送到 Google Container Registry。

在运行管道时,我注意到所有定义的步骤都以SUCCESS 状态通过,但构建摘要本身以FAILURE 状态返回,即使我可以看到图像正在生成到 Google 容器注册表中。

我使用以下命令构建图像

gcloud builds submit --config cloudbuild.yml --gcs-log-dir 'gs://<bucket>' .

以下是返回的错误信息:

ERROR: (gcloud.builds.submit) build www-xxxx-yyyy-zzzz completed with status "FAILURE"
???? Error: The command exited with status 1

如果所有步骤都标记为SUCCESSgcloud builds submit 命令是否有任何理由以上述代码1 退出?

以下是从gcloud builds describe 命令获取的针对特定构建的一些过滤日志数据。

steps:
- args:
  - build
  - -t
  - <host>/<project/<image>:<tag>
  - .
  name: gcr.io/cloud-builders/docker
  status: SUCCESS
- args:
  - test
  - --image
  - <host>/<project/<image>:<tag>
  - --config
  - test_config.yml
  - -o
  - json
  name: gcr.io/gcp-runtimes/container-structure-test
  status: SUCCESS

以下是 Google Cloud Build 设置:

# cloudbuild.yml

steps:
# Build the image
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', '<host>/<project/<image>:<tag>', '.' ]
# Test the image
- name: 'gcr.io/gcp-runtimes/container-structure-test'
  args: [ 
    'test',
    '--image',
    '<host>/<project/<image>:<tag>',
    '--config',
    'test_config.yml',
    '-o',
    'json'
  ]

# Push the image
images: [ '<host>/<project/<image>:<tag>' ]

【问题讨论】:

  • 这是在本地环境中完成还是在 GCP 上完成?询问是因为 GCP 应该有审核日志,它通常会提供有关错误的更多详细信息,因为我认为错误 1 ​​是一个通用错误代码。
  • 您是否尝试更新您的 gcloud sdk 版本?
  • @fabc 它是在 GCP 上完成的,查看了所有日志,但实际上无法为摘要级别日志绘制任何内容。单个步骤的日志也没有显示任何错误。仅返回带有 ERROR 状态的构建摘要
  • @guillaume 我没试过,我注意到最近 gcloud CLI 有一个更新,也许它也带有新的 SDK。我会试一试,看看它是否有效。谢谢!
  • 如果您尝试更新 gcloud SDK 版本以及是否解决了问题,请告知我们,以便其他用户将来可以从您的回复中受益。否则,我会尽量重现你的情况。

标签: docker google-cloud-build google-container-registry


【解决方案1】:

在 Google Cloud 支持团队的帮助下,我终于解决了这个问题。

他们发现 403 Permission Denied 错误,因为 Cloud Build 容器试图访问 Google Cloud Storage 以删除存储在存储桶中的某个日志对象,此错误消息在用户/客户拥有的 Cloud Build 后台系统中找到无权访问。 403 Permission Denied 错误是应用到存储桶的对象保留策略的结果。

就我而言,我已将保留策略替换为生命周期策略来解决此问题,并且效果很好。我们这样做是因为我们认为控制 Cloud Build 日志大小是我们的主要目标,并且为了防止对日志文件的任何意外删除/修改,我们最终设置了对日志存储桶中资源的只读访问权限,除了Cloud Build 使用的服务帐号。

【讨论】:

    猜你喜欢
    • 2023-01-08
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2019-05-23
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    相关资源
    最近更新 更多