首页 > 解决方案 > 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 分钟(所有步骤)。

任何想法为什么角度产品构建的云构建需要这么长时间以及如何减少它?

标签: angularangularfiregoogle-cloud-build

解决方案


@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 缓存目录
  • 使用自定义虚拟机大小
  • 避免上传不必要的文件

推荐阅读