gcloudignore 不允许标准通配符白名单

yel*_*gel 9 gcloud google-cloud-functions

Gcloudignore 的工作方式类似于 gitignore,因为您可以将某些文件从上传到 GCF 中排除。有时,当您拥有包含大量生成文件的大型项目时,排除除少数文件之外的所有文件会很有用。

.gcloudignore

# Ignore everything
# Or /*
*

# Except the Cloud Function files we want to deploy
!/package.json
!/index.js
Run Code Online (Sandbox Code Playgroud)

下面的 gcloudignore 文件给了我们:File index.js or function.js that is expected to define function doesn't exist in the root directory.意思是 index.js 被忽略并且无法读取。

但是,以下忽略文件语法适用于部署:

# Ignore everything
/[!.]*
/.?*

# Except the Cloud Function files we want to deploy
!/package.json
!/index.js
Run Code Online (Sandbox Code Playgroud)

我尝试查看 gcloud 程序代码,但我想知道是否有人知道为什么会这样?

小智 13

我也遇到了这个问题。

我找到了一个解决方法——明确允许当前目录:

# Ignore everything by default
*

# Allow files explicitly
!foo.bar
!*.baz

# Explicitly allow current dir. `gcloud deploy` fails without it.
!.
Run Code Online (Sandbox Code Playgroud)

为我工作。不知道为什么。

  • 值得注意的是,appengine 和云函数之间的 .gcloudignore 实现似乎略有不同 - appengine .gcloudignore 似乎不需要显式允许当前目录 (!.),而云函数部署则需要。 (2认同)
  • 是的,我一直在应用程序引擎中使用像 OP Fine 这样的规则,但在函数的实现中偶然发现了这个错误。更烦人的是,“gcloud meta list-files-for-upload”确实正确处理它,因此与实际部署的行为不匹配。 (2认同)