如何使用schema文件描述规范
更新时间: 2025/12/12
在Gitcode上查看源码本文讲解openubmc构建工程如何管理自己的配置文件。
背景
openubmc构建工程广泛采用机制和策略解耦,构建代码和产品配置划分出明确的业务边界,两者使用manifest.yml、subsys等配置文件互动。
- 构建工具与代码分离会产生版本匹配。
- 功能引入和变更如何赋能和指导开发者配置。
一般的做法是在设计文件或更新wiki中描述需要配置什么属性、这些属性需要什么样的值、哪些是必须哪些是可选等要求。 文档传递在实践过程效果不明显,定义和使用之间脱节,开发者感知低,无法高效传递,容易导致不正确的配置上库,降低了整体效率。
openubmc的构建工程采用自动化的工程和工具解决,构建工程提供的每个json/yaml文件的格式都使用json schema描述,通过schema文件自动传递规范和要求,看护配置文件正确性,构建过程会提前检查配置正确性,提前配置,并且schema校验一般不接受。
openubmc要求构建机制影响策略配置的都需要按如下流程完成设计和开发:
- 设计新机制、新功能时优先完成配置项值类型、可选值、可选必选定义,分析兼容性影响。
- 分配配置项兼容性,一般按兼容处理,不影响既有配置。如果的确存在影响的,需要协同产品共同完成配置适配。
WARNING
构建工程会独立演进,维护工具的兼容性是非常重要,一个完全兼容的工具可以减少大量的适配成本,广泛适用于伙伴构建。
yaml文件schema标注
yaml文件标注使用yaml-language-server: $schema=<url>格式,其中url支持本地文件或远程文件,示例:
yaml
# yaml-language-server: $schema=../../../schema/manifest.schema.json
base:
version: "5.01.00.01.B004"
customization: "customization/prototype.py"json文件schema标注
json文件标注需要在顶层对象中添加$schema配置项指定schema文件路径,示例:
yaml
{
"$schema": "http://json-schema.org/draft-07/schema#",
}开发者使用
开发者需要在vscode中安装redhat.vscode-yaml插件,该插件提供了格式提醒功能,辅助开发者正确配置。
schema校验只在版本构建场景开启,开发者修改manifest以及subsys配置时,建议执行一次bmcgo build -t publish命令。
TIP
schema校验计划在所有场景默认开启。