node.js - 将nodejs应用程序部署到gae/se : gcloud app deploy : This deployment has too many files

标签 node.js express google-app-engine google-cloud-platform gitlab-ci

我想运行 gitlab-ci 管道将我的express.js Web应用程序部署到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 来计算我的文件数。 -类型 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/
*~

最佳答案

有一个limit App Engine 上每个目录有 1000 个文件,每个应用程序有 10000 个文件。我相信与您的应用程序一起部署的库导致了此错误。您可以使用app.yaml文件skip_files指令忽略部署到 App Engine 不需要的文件/文件夹。

要确定正在部署哪些文件并可能导致此错误,您可以设置 verbosity在部署命令中标记为 debug,如下所示。

gcloud app deploy --verbosity=debug

我还发现了一个类似的 StackOverflow 答案,它描述了所有这些细节 here .

希望这有帮助。

关于node.js - 将nodejs应用程序部署到gae/se : gcloud app deploy : This deployment has too many files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53821535/

相关文章:

angularjs - 通过 Node 向前端应用程序发送数据?

java - 如何使用ava通过浏览器检测国家信息

google-app-engine - 谷歌应用引擎 (GAE) 上的 Lucene

javascript - 如何在node.js中使用Promise.all和Request?

javascript - NodeJS 表达未解析的函数或方法 get()

javascript - 网页的动态日志记录窗口

java - Google App Engine 和 dos.xml

node.js - 模块构建失败 : Error: Couldn't find preset "stage-0" relative to directory

javascript - 无法获取/帖子/任何内容。看起来 req.params 不起作用

android - 在android上react-native上传图片