angular - Angularfire 项目的 Google Cloud Build 超时
问题描述
在尝试构建 angular + firebase 项目的 prod 构建时,它总是超时。我看到它快完成了,但是构建 Angular 应用程序的 prod 版本的步骤已经占用了 > 8 分钟。在本地构建它只需要 50 秒。
这些是我在 cloudbuild.yaml 中使用的步骤:
steps:
##########
# FUNCTIONS
##########
# Install
- name: 'gcr.io/cloud-builders/npm:node-10.10.0'
args: ['install']
dir: 'functions'
##########
# HOSTING
##########
# Install
- name: 'gcr.io/cloud-builders/npm:node-10.10.0'
args: ['install']
dir: 'hosting'
# Build
- name: 'gcr.io/cloud-builders/npm:node-10.10.0'
args: ['run', 'build', '--', '--prod=$_IS_PRODUCTION']
dir: 'hosting'
env:
- some environment variables here containing api keys etc...
##########
# DEPLOY
##########
- name: 'gcr.io/$PROJECT_ID/firebase'
args: ['deploy', '-P', '$_BUILD_LINE']
非生产版本运行良好,总共只占用 4 分钟(所有步骤)。
任何想法为什么角度产品构建的云构建需要这么长时间以及如何减少它?
解决方案
@lunu 我对此进行了调查并在此处复制了您的问题,这是我的分析:
- 一个步骤的默认超时为 10 分钟
- 由于构建过程分为多个步骤,因此每个步骤都会复制上一步生成的资产。
- 我怀疑第 2 步超时,因为它正在复制大量文件,而且我猜它们的大小很大。
我建议以这种方式在构建步骤中添加“超时”选项:
# Build
- name: 'gcr.io/cloud-builders/npm:node-10.10.0'
args: ['run', 'build', '--', '--prod=$_IS_PRODUCTION']
timeout: 900s
dir: 'hosting'
env:
- some environment variables here containing api keys etc…
我把它放在这里 900 秒,即 15 分钟,您可以更改它以满足您的需求。
无论如何,如果构建花费了这么多时间,则需要考虑一些最佳实践:
- 构建更精简的容器
- 使用 Kaniko 缓存
- 使用缓存的 Docker 映像
- 使用 Google Cloud Storage 缓存目录
- 使用自定义虚拟机大小
- 避免上传不必要的文件
推荐阅读
- webview - 如何更新 AWS 设备场中的系统应用程序?
- php - wordpress 错误没有这样的文件或目录 wp-settings.php 第 174 行
- rest - 通过完全限定域名而不是 IP 地址访问部署在集群上的应用程序
- r - 将 data.frame 从 AAABBBCCC 重新排序为 ABCABCABC
- android - How to store large size texts in a TextView
- deep-learning - 在新的相似数据集上使用 tensorflow 对象检测 api 重新训练模型
- r - 引导不同长度的值
- python - 为什么我得到 sqlalchemy.orm.attributes.InstrumentedAttribute 对象而不是 sqlite 表中的数据?
- docker - 从 docker-compose.yml 文件运行 docker 容器时面临问题
- python - 一列(收入)的总和值基于:另一列(日期)的值和熊猫中另一列(UserId)的值