How can I exclude a file from deploy in gcloud?

Publish date: 2024-05-05

I have built a Node.js app and what I do to deploy is cd into my project's directory and run gcloud preview app deploy. This works, but in the files I also have a JSON file which acts like the database for my application, which I do not want updated on the site when I deploy.

I cannot seem to find any way of doing this.

Any idea?

4 Answers

In this case, a .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 

Some gcloud commands like gcloud functions deploy may automatically generate a .gcloudignore file.

The .gcloudignore file must reside in the project root folder.

Here is the .gcloudignore that is automatically generated by the gcloud function deploy command:

# 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 node_modules 

This worked fine for me with a NodeJS project with the following structure:

~/Workspace/my-project $ tree -a . ├── .idea │   ├── func-project.iml │   ├── misc.xml │   ├── modules.xml │   ├── vcs.xml │   └── workspace.xml ├── .gcloudignore ├── index.js ├── package-lock.json └── package.json 

In this case, without the .gcloudignore this is what is deployed:

enter image description here

And with the following .gcloudignore:

.gcloudignore .git .gitignore .idea node_modules package-lock.json 

This is what is deployed:

enter image description here

See more on this.

3

There is skip_files directive in your app.yaml to exclude paths or files you do not want deployed.

But If you are working on a node.js project you would have to use .gcloudignore file which will specify which directories to exclude.

This .gcloudignore would prevent the upload of the node_modules/ directory and any files ending in ~:

 node_modules/ *~ 

Reference to documentation:
1. https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore
2. https://cloud.google.com/appengine/docs/standard/nodejs/config/appref (search 'skip_files')

I believe you will want to use the skip_files directive in your app.yaml to exclude paths or files you do not want deployed.

Something like:

skip_files: - ^your_data_dir/.*\.json? 
2

In the case for google compute engine run:

gcloud config set gcloudignore/enabled true 

In the case of google app engine: create a file called .gcloudignore in root dir and add the folders or files to be ignored it acts just like .gitignore

ncG1vNJzZmirpJawrLvVnqmfpJ%2Bse6S7zGiorp2jqbawutJoam9vZWaGcYSOoaawZZOWu261jJ6vnKSlmbJurYyfoKWdXZu%2FsLmMnZyppJ%2Bueqq6jKCapaelmQ%3D%3D