存储失败构建的工件

Lee*_*nes 4 google-cloud-build

我正在我的云构建步骤之一中运行一些屏幕差异测试。测试生成了我想在构建后查看的 png 文件,但它似乎会在成功构建时上传工件。

如果我的测试失败,进程会以非零代码退出,从而导致以下错误:

ERROR: build step 0 "gcr.io/k8s-skaffold/skaffold" failed: step exited with non-zero status: 1
Run Code Online (Sandbox Code Playgroud)

这进一步导致另一个错误


ERROR: (gcloud.builds.submit) build a22d1ab5-c996-49fe-a782-a74481ad5c2a completed with status "FAILURE"
Run Code Online (Sandbox Code Playgroud)

并且没有上传任何工件。

|| true在测试后添加,因此它成功退出,并且工件被上传。

我想要:

  • A) 确认此行为是预期的
  • B)知道是否有办法上传工件,即使某个步骤失败了

编辑:

这是我的cloudbuild.yaml


options:
 machineType: 'N1_HIGHCPU_32'

timeout: 3000s

steps:

- name: 'gcr.io/k8s-skaffold/skaffold'
  env:
  - 'CLOUD_BUILD=1'
  entrypoint: bash
  args:
  - -x  # print commands as they are being executed
  - -c  # run the following command...
  - build/test/smoke/smoke-test.sh


artifacts:
  objects:
    location: 'gs://cloudbuild-artifacts/$BUILD_ID'
    paths: [
      '/workspace/build/test/cypress/screenshots/*.png'
    ]
Run Code Online (Sandbox Code Playgroud)

Nib*_*s H 5

如果构建步骤失败,Google Cloud Build 不允许我们上传工件(或运行某些步骤)。这是预期的行为。

公共问题跟踪器中已经创建了一个功能请求,允许我们运行一些步骤,即使构建已完成或失败。请随时为其加注星标,以获取有关此问题的所有相关更新。

现在的解决方法正如您提到的使用 || 测试后为 true 或使用 || exit 0 如本Github 问题中所述。

  • 谷歌一定是在跟我们开玩笑。我无法用语言来表达 Google Cloud Build 产品有多么糟糕。如果没有这个功能,他们怎么能进入产品呢?现实案例:我无法查看带有详细日志的集成测试视频。因此,我调试失败测试的能力有限。耻辱。 (2认同)