How Can I Exclude a File from Deploy in Gcloud?

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:

And with the following .gcloudignore:

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

This is what is deployed:

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.
2. (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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Sophia Al-Mansoor

Sophia Al-Mansoor

Global Business & E-Commerce Reporter

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.

Share this article
Twitter Facebook Pinterest