Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to ignore files when running `gcloud app deploy`?

Tags:

When I run

gcloud app deploy app.yaml 

which files actually get uploaded?

The project folder contains folders and files such as .git, .git_ignore, Makefile or venv that are irrelevant for the deployed application.

How does gcloud app deploy decide which files get uploaded?

like image 885
Lars Blumberg Avatar asked Sep 26 '17 19:09

Lars Blumberg


People also ask

What is Gcloudignore?

gcloudignore file would help by preventing the upload of any file or directory. The syntax is the same as the . gitignore file. First you could make sure gcloudignore is enabled: gcloud config list. If it is not, then you may enable it: gcloud config set gcloudignore/enabled true.

How long does gcloud app deploy take?

When firing of gcloud preview app deploy the whole process takes ~8 minutes, most of which is "updating service".

How do I get rid of gcloud app deploy?

Warning: You cannot undo this operation. If you want to delete a deployment, but keep all the underlying resources, you must use the Google Cloud CLI or the API. In the console, open the Deployments page.


2 Answers

tl;dr: you should use a .gcloudignore file, not skip_files in app.yaml.

While the prior two answers make use of skip_files in the app.yaml file. There is now a .gcloudignore that is created when using gcloud deploy or upload commands. The default will depend on the detected language that you are using but here is automatically created .gcloudignore that I found in my Python project:

# 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__/ 

Note: These commands will not work when both skip_files is defined and .gcloudignore is present. This is not mentioned in the skip_filesdefinition of theapp.yaml` reference.

It seems better to have a globally recognized standard across gcloud commands and makes more sense to adopt the .gcloudignore versus using the skip_files which is only relevant without App Engine. Additionally, it works pretty much like a .gitignore file which the reference mentions:

The syntax of .gcloudignore borrows heavily from that of .gitignore; see https://git-scm.com/docs/gitignore or man gitignore for a full reference.

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

like image 58
dalanmiller Avatar answered Sep 17 '22 16:09

dalanmiller


EDIT Aug 2018: Google has since introduced .gcloudignore, which is now preferred, see dalanmiller's answer.


They're all uploaded, unless you use the skip_files instruction in app.yaml. Files with a dot like .git are ignored by default. If you want to add more, beware that you're overriding these defaults and almost certainly want to keep them around.

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

Note also that they are uploaded to different places if you use a static handler. Static files are sent to a CDN and are not available to your language run time (although there are ways around that, too).

Make sure to read the docs:

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

like image 34
Chris Avatar answered Sep 20 '22 16:09

Chris