问题描述
我尝试了许多其他方法来延长CloudBuild的持续时间,但是我的gcloud应用程序部署步骤始终会在10分钟后超时。遵循其他主题的技巧,我已经在本地终端上尝试了此设置
gcloud config set app/cloud_build_timeout 2000
我还尝试了许多构建作业和任务级别超时的组合,但是该步骤总是在10分钟后失败,并且云构建日志中出现此错误
ERROR: context deadline exceeded
这是我笔记本电脑上的错误
Step #2: ERROR: (gcloud.app.deploy) Error Response: [4] Cloud build did not succeed within 10m.
我的cloudbuild.yaml是
steps:
- name: gcr.io/cloud-builders/npm
args: [ install ]
- name: 'gcr.io/$PROJECT_ID/ng'
args: ['build','--prod']
- name: gcr.io/cloud-builders/gcloud
#entrypoint: 'bash'
#args: ['-c','gcloud config set app/cloud_build_timeout 2000 && gcloud app deploy']
args: [ app,deploy ]
timeout: 2000s
timeout: 4600s
然后我使用命令从笔记本电脑运行构建
gcloud builds submit . --config=cloudbuild.yaml --timeout=1h
如何允许gcloud应用程序部署步骤运行超过10分钟?
更新1
我还按照下面的注释尝试了各种版本,仍然是相同的错误消息
steps:
- name: gcr.io/cloud-builders/npm
args: [ install ]
timeout: 2000s
- name: 'gcr.io/$PROJECT_ID/ng'
args: ['build','--prod']
timeout: 2000s
- name: gcr.io/cloud-builders/gcloud
args: [ app,deploy ]
timeout: 2000s
timeout: 6100s
我不知道它是否相关,但查看日志,看来gcloud app的部署步骤正在重新编译代码,与上一步相同。
解决方法
向构建步骤添加一个超时字段。这是因为Cloud Build构建步骤和构建的默认超时为10分钟,并且App Engine部署所花费的时间可能比完成时间更长。指定更长的超时时间将确保如果gcloud应用程序部署花费的时间超过10分钟,则构建不会超时。
示例:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app','deploy']
timeout: '1600s'
以上示例将为您的App Engine部署增加27分钟的超时时间。