развернуть приложение nodejs в gae / se: gcloud app deploy: в этом развертывании слишком много файлов - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу запустить конвейер gitlab-ci для развертывания моего веб-приложения express.js в среде GAE / SE.

Когда мой конвейер gitlab-ci запускается и запускается gcloud app deploy, команда gcloud не выполняется, как показано ниже:

ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: This deployment has too many files. New versions are limited to 10000 files for this app.
- '@type': type.googleapis.com/google.rpc.BadRequest
  fieldViolations:
  - description: This deployment has too many files. New versions are limited to 10000
      files for this app.
    field: version.deployment.files[...]

Я попытался сосчитать мои файлы с помощью команды find . -type f | wc -l, но в моем хранилище указано только 3886 файлов.

Мои вопросы:

  • Почему сервер GAE / SE говорит, что слишком много файлов для загрузки?
  • Если я что-то пропускаю, есть ли способы решить эту проблему?(Или я должен использовать flex env?)

.gitlab-ci.yml

image: node:8

cache:
  paths:
  - node_modules/

stages:
  - deploy

deploy:production:
  stage: deploy
  environment:
    name: production
    url: `${GAE_URL}`
  before_script:
    - wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz
    - tar zxvf google-cloud-sdk.tar.gz && ./google-cloud-sdk/install.sh --usage-reporting=false --path-update=true
    - PATH="google-cloud-sdk/bin:${PATH}"
  script:
    - echo $GAE_KEY_FILE > gae_auth.json
    - ./google-cloud-sdk/bin/gcloud auth activate-service-account --key-file gae_auth.json
    - ./google-cloud-sdk/bin/gcloud app deploy --project=$GAE_PROJECT_ID
  only:
  - dev

.gcloudignore

.git/
node_modules/
*~

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Если я правильно прочитал ваш .gitlab-ci.yml, вы, похоже, устанавливаете облачный SDK внутри того же каталога, из которого вы развертываете свое приложение, - таким образом, это каталог вашего приложения.

Поскольку каталог SDKне входит в ваш .gcloudignore файл, он загружен как часть вашего приложения.И я посчитал файлы в dir SDK после ваших команд wget и tar zxvf:

$> wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz
$> tar zxvf google-cloud-sdk.tar.gz
$> find google-cloud-sdk/ | wc -l
6442

Добавление этого к файлам 3.8k вашего приложения - это более 10k предела.

Вы можете попытаться установить SDK где-нибудь за пределами dir вашего приложения или добавить его шаблон dir в файл .gcloudignore.

0 голосов
/ 18 декабря 2018

Существует ограничение 1000 файлов на каталог и 10000 файлов на приложение в App Engine.Я считаю, что библиотека, развертываемая с вашим приложением, вызывает эту ошибку.Вы можете использовать директиву app.yaml file skip_files, чтобы игнорировать файлы или папки, которые не нужны для развертывания в App Engine.

Чтобы определить, какие файлы развертываются и могут вызвать эту ошибку, вы можете установить флаг verbosity на debug в вашей команде развертывания следующим образом.

Развертывание приложения gcloud --verbosity = debug

Я также нашел аналогичный ответ StackOverflow, который описываетвсе эти детали здесь .

Надеюсь, это поможет.

...