如何在运行`gcloud app deploy`时忽略文件?

时间:2017-09-26 19:21:24

标签: python google-app-engine google-app-engine-python

当我跑步时

gcloud app deploy app.yaml

哪些文件实际上传?

项目文件夹包含与已部署的应用程序无关的文件夹和文件,例如.git.git_ignoreMakefilevenv

gcloud app deploy如何决定上传哪些文件?

3 个答案:

答案 0 :(得分:10)

tl;博士:您应该使用.gcloudignore文件,而不要在skip_files中使用app.yaml

尽管前两个答案使用skip_files文件中的app.yaml。现在,使用.gcloudignoregcloud deploy命令时会创建一个upload。默认值取决于您使用的检测到的语言,但是这里是在我的Python项目中自动创建的.gcloudignore

# This file specifies files that are *not* uploaded to Google Cloud Platform 
# using gcloud. It follows the same syntax as .gitignore, with the addition of
# "#!include" directives (which insert the entries of the given .gitignore-style
# file at that point).
#
# For more information, run:
#   $ gcloud topic gcloudignore
#
.gcloudignore
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below: 
.git 
.gitignore

# Python pycache:
__pycache__/

注意:当同时定义了skip_files.gcloudignore时,这些命令将不起作用。 skip_filesdefinition of theapp.yaml` reference中未提及。

gcloud命令中使用全球公认的标准似乎更好,并且采用.gcloudignore比使用skip_files更有意义,后者仅在没有App Engine的情况下才有意义。此外,它的工作原理很像参考文件中提到的.gitignore文件:

  

.gcloudignore的语法大量来自.gitignore的语法;   参见https://git-scm.com/docs/gitignore或man gitignore查看完整内容   参考。

https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore

答案 1 :(得分:8)

编辑2018年8月:谷歌引入.gcloudignore,现在首选,请参阅dalanmiller的答案。

除非您使用skip_files中的app.yaml说明,否则他们全部上传。默认情况下,忽略带有.git点的文件。如果你想增加更多,请注意你要覆盖这些默认值,并且几乎肯定想要保留它们。

skip_files:
  - ^Makefile$
  - ^venv$
  # Defaults
  - ^(.*/)?#.*#$
  - ^(.*/)?.*~$
  - ^(.*/)?.*\.py[co]$
  - ^(.*/)?.*/RCS/.*$
  - ^(.*/)?\..*$

另请注意,如果您使用静态处理程序,它们会上传到不同的地方。静态文件被发送到CDN,并且不能用于您的语言运行时(尽管也有办法)。

请务必阅读文档:

https://cloud.google.com/appengine/docs/standard/python/config/appref#skip_files

答案 2 :(得分:0)

  

gcloud app部署如何决定上传哪些文件?

没有。它默认上传所有内容。如另一个回复中所述,您可以使用app.yaml中的skip_files部分,如下所示:

skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$
- ^(.*/)?\.bak$
- ^\.idea$
- ^\.git$

您还可以使用--verbosity参数查看正在部署的文件,例如gcloud app deploy app.yaml --verbosity=debuggcloud app deploy app.yaml --verbosity=info per docs