gcloud不会跳过根级文件

时间:2018-11-13 10:40:21

标签: google-app-engine single-page-application gcloud google-cloud-sdk

我正在尝试将SPA部署到GAE。我正在按照他们的static website example中给出的配置示例进行操作。我的项目文件夹结构如下:

D:\Projects\Proj1
    |-node_modules
    |-src
    |-www
    |-.babelrc
    |-.gitignore
    |-app.yaml
    |-package.json
    |-package-lock.json

和我的app.yaml如下:

runtime: php55
service: frontend
api_version: 1
threadsafe: true

handlers:
- url: /
  static_files: www/index.html
  upload: www/index.html

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

项目输出将构建到www文件夹中。 gcloud用于通过批处理文件中的gcloud app deploy app.yaml --quiet --version %DOC_VERSION% --project %GCP_PROJECT_ID%命令进行部署。

我原本希望gcloud复制和部署仅位于www文件夹下的文件,但是相反,它也开始复制node_modules文件夹下的aprox 10K文件(我终止了该过程)。

因此,我更改了app.yaml,现在看起来像这样:

runtime: php55
service: frontend
api_version: 1
threadsafe: true
skip_files:
    - ^node_modules$
    - ^src$
    - ^assets$
    - ^\.

handlers:
- url: /
  static_files: www/index.html
  upload: www/index.html

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

并按预期工作。

我的理解是static_files工具使用gcloud设置来上传相关文件。那么,为什么要从未提及的文件夹上传文件呢?提到skip_files是正确解决此问题的唯一方法吗?

1 个答案:

答案 0 :(得分:2)

app.yaml文件中的static_files设置仅将目录指定为静态文件的位置,以便平台在运行时需要时定位它们。

要指定在部署期间应该上传或不应该上传哪些目录和文件,在app.yaml中定义skip_files是一种选择。另一个选项是在项目的根目录(app.yaml所在的位置)中创建一个.gcloudignore文件,在该文件中指定应上传到Google Cloud Platform的文件。它遵循与.gitignore相同的语法。您可以在Github示例代码here中找到一个示例。请注意,您可以使用skip_files.gcloudignore来避免冲突。