Срок действия проекта Google Cloud Build of Angularfire истек - PullRequest
0 голосов
/ 05 октября 2019

Когда вы пытаетесь собрать prod-сборку для проекта angular + firebase, время ожидания истекает. Я вижу, что он почти закончен, но шаг для создания расширенной версии углового приложения уже занимает> 8 минут. При локальном построении это занимает всего 50 с.

шаги по созданию облака image

Это шаги, которые я использую в 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 минуты (для всех этапов).

Любые идеи о том, почему облачная сборка угловой сборки сборки занимает так много времени и как я могу ее уменьшить

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

После многих попыток с различными решениями я нашел работающее: благодаря подсказке Меткала Халави относительно "каждого шага копировать активы, произведенные на предыдущем шаге", я изменил сборку, чтобы установить всезависимости и затем выполните сборку за один шаг:

Добавьте сценарий в package.json:

"build-from-scratch": "npm install && npm run build"

Затем выполните этот сценарий в cloudbuild.yaml:

- name: 'gcr.io/cloud-builders/npm:node-10.10.0'
  args: ['run', 'build-from-scratch', '--', '--prod=$_IS_PRODUCTION']
  timeout: 600s
  dir: 'hosting'

Поскольку теперь модули npm не нужно копировать с этапа установки на этап сборки, сборка занимает всего ~ 3 минуты.

0 голосов
/ 09 октября 2019

@ 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
  • Использование пользовательских размеров виртуальной машины
  • Предотвращение загрузки ненужныхфайлы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...