如何从 gcloud 中的部署中排除文件?

How can I exclude a file from deploy in gcloud?

我构建了一个 Node.js 应用程序,我所做的部署是 cd 到我的项目目录和 运行 gcloud preview app deploy。这有效,但在文件中我还有一个 JSON 文件,它充当我的应用程序的数据库,我不想在部署时在网站上更新它。

我似乎找不到任何方法。

有什么想法吗?

我相信您会希望在 app.yaml 中使用 skip_files 指令来排除您不想部署的路径或文件。

类似于:

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

您的 app.yaml 中有 skip_files 指令以排除您不想部署的路径或文件。

但是,如果您正在处理 node.js 项目,则必须使用 .gcloudignore 文件,该文件将指定要排除的目录。

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

  node_modules/
  *~

参考文档:
1. https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore
2. https://cloud.google.com/appengine/docs/standard/nodejs/config/appref(搜索'skip_files')

在这种情况下,.gcloudignore 文件有助于防止上传任何文件或目录。语法与 .gitignore 文件相同。

首先您可以确保 gcloudignore 已启用:

gcloud config list

如果没有,您可以启用它:

gcloud config set gcloudignore/enabled true

某些 gcloud 命令,如 gcloud functions deploy 可能会自动生成 .gcloudignore 文件。

.gcloudignore 文件 必须 位于项目根文件夹中。

这里是gcloud function deploy命令自动生成的.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

node_modules

对于具有以下结构的 NodeJS 项目,这对我来说效果很好:

~/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

在这种情况下,没有 .gcloudignore 这是部署的内容:

以下.gcloudignore

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

这是部署的内容:

参见 more on this