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.
3There 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?
2In 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