如何使用schema文件描述规范
更新时间: 2025/12/12
在Gitcode上查看源码

本文讲解openubmc构建工程如何管理自己的配置文件。

背景

openubmc构建工程广泛采用机制和策略解耦,构建代码和产品配置划分出明确的业务边界,两者使用manifest.yml、subsys等配置文件互动。

  1. 构建工具与代码分离会产生版本匹配。
  2. 功能引入和变更如何赋能和指导开发者配置。

一般的做法是在设计文件或更新wiki中描述需要配置什么属性、这些属性需要什么样的值、哪些是必须哪些是可选等要求。 文档传递在实践过程效果不明显,定义和使用之间脱节,开发者感知低,无法高效传递,容易导致不正确的配置上库,降低了整体效率。

openubmc的构建工程采用自动化的工程和工具解决,构建工程提供的每个json/yaml文件的格式都使用json schema描述,通过schema文件自动传递规范和要求,看护配置文件正确性,构建过程会提前检查配置正确性,提前配置,并且schema校验一般不接受。

openubmc要求构建机制影响策略配置的都需要按如下流程完成设计和开发:

  1. 设计新机制、新功能时优先完成配置项值类型、可选值、可选必选定义,分析兼容性影响。
  2. 分配配置项兼容性,一般按兼容处理,不影响既有配置。如果的确存在影响的,需要协同产品共同完成配置适配。

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校验计划在所有场景默认开启。