为什么我无法覆盖 Google Cloud Build 的超时?

Why can't I override the timeout on my Google Cloud Build?

我正在尝试使用 Google Cloud Build 设置 CI 管道。

我正在尝试部署一个构建时间较长的 MeteorJS 应用程序 - GCB 的默认构建超时为 10 分钟,建议 here 我增加超时。

我已经设置了我的 cloudbuild.yaml 文件,timeout 选项增加到 20 分钟:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy']
timeout: 1200s

我在连接到 Bitbucket Repo 的 GCB 中设置了一个触发器,当我推送更改并且触发触发器时,我得到了 2 个新构建 - 一个来自 Bitbucket,一个来自 Google Cloud Storage

构建时间超过 10 分钟后,从 Cloud Storage 构建将超时,这将导致 Bitbucket 构建也失败 Error Response: [4] DEADLINE_EXCEEDED

有时,无论出于何种原因,云存储构建将在 10 分钟内完成,这将允许 Bitbucket 构建成功完成并部署。

如果我尝试 cancel/stop Cloud Storage 构建,它也会停止 Bitbucket 构建。

下面的屏幕截图显示了 2 次尝试完全相同的构建但结果不同。

我不明白这第二个 Cloud Storage Build 是从哪里来的,但它似乎不受我的 yaml 文件中的设置或我的全局 GCP 设置的影响。

我已尝试从 gcloud CLI 运行 以下命令:

gcloud config set app/cloud_build_timeout 1200
gcloud config set builds/timeout 1200
gcloud config set container/build-timeout 1200

我也尝试过使用高 CPU 构建机器来加速这个过程,但它似乎没有任何效果。

任何见解将不胜感激 - 我觉得我已经用尽了我能想到的 Google 搜索关键字的所有可能组合!

此超时错误来自 App Engine 部署本身,默认情况下有 10 分钟的超时。

您需要像这样在容器内部更新 app/cloud_build_timeout 属性:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['-c', 'gcloud config set app/cloud_build_timeout 1200 && gcloud app deploy']
timeout: 1200s

更新

其实更简单solution:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy']
  timeout: 1200s
timeout: 1200s