我是不是需要跨多个 YAML 文件复制“skip_files”?
Posted
技术标签:
【中文标题】我是不是需要跨多个 YAML 文件复制“skip_files”?【英文标题】:Do I need to copy `skip_files` across multiple YAML files?我是否需要跨多个 YAML 文件复制“skip_files”? 【发布时间】:2016-01-23 06:32:41 【问题描述】:我仍然对 appengine 模块部署过程一无所知。我的应用包含三个模块,我独立更新和部署。
我刚刚注意到,虽然我在 app.yaml 中为我的默认模块声明了 skip_files
,但我的自定义模块仍在部署所有内容。所以我将 app.yaml 中的指令复制粘贴到自定义 YAML 文件中。虽然我认为不需要经常更改这些,但我仍然希望尽可能多地干燥。
有没有办法定义一次skip_files
并继承或引用这些指令?
【问题讨论】:
【参考方案1】:GAE 将每个模块视为一个单独的独立应用程序,每个模块都在自己的实例中运行。在模块之间的 GAE 基础设施级别不共享应用程序可上传的工件。因此,如果我理解正确的话,甚至可以混合使用不同语言编写的模块。
在DRY
Spirit 应用程序的文件或目录可以在源代码级别的模块之间“共享”,方法是将文件/目录的单个源副本符号链接到所有模块中。当应用程序部署到 GAE 中时,部署实用程序会用实际的符号链接目标内容替换符号链接。
但是,符号链接方法不适用于文件级别以下的共享,例如文件中的部分。 DRY 仍可应用于 GAE 基础架构明确支持的配置文件的某些 select 部分。
根据the documentation,skip_files
部分恰好是此类受支持的部分之一:
includes 指令允许你包含配置文件 适用于整个应用程序中的任何库或模块。例如, 您可能会包含一个用户管理库,如下所示:
includes: - lib/user_admin.yaml
...和...
使用包含仅检索以下类型的指令 目标文件(如果存在):
内建 包括 处理程序 skip_files
基于此,我认为您可以在应用的***目录中有一个 app_shared.yaml
文件,其中包含您的 skip_files
模式(小心覆盖默认值,顺便说一句),然后您可以包含在模块的 .yaml
文件中:
includes:
- app_shared.yaml
您可能需要将 app_shared.yaml
符号链接到每个模块的目录(上述 DRY 方法),如果这是 the Modules Doc 中建议的模块的 .yaml
文件所在的位置。
注意:我自己并没有实际使用包含方法,答案完全基于文档。
【讨论】:
对文档的精彩诠释!现在我正在看它,这很明显:) 非常感谢。 实际上,现在我正在查看模块文档,我认为重新组织我的模块将完全消除共享skip_files
的需要:我所有的模块源文件都是混合的在各个目录中,所有 YAML 文件都位于***目录中。之所以这样,是因为我在深夜做了一个快速简单的模块化,直到现在都没有再考虑过。以上是关于我是不是需要跨多个 YAML 文件复制“skip_files”?的主要内容,如果未能解决你的问题,请参考以下文章