背景
openubmc的manifest仓是产品配置仓,之前的方案需要提前下载bmc_sdk.zip文件,调用init.py中初始化容器,此设计带来如下问题:多个openubmc版本使用不同的bmc_sdk.zip,开发者使用时一般一个容器对应一个openubmc版本,增加维护难度。
问题
之前的需求 AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台 提出了由产品管理SDK的要求,但在代码实现时存在以下:
- schema定义错误:配置项sdk/downloads中未将name申明为必选,但在构建脚本中会读取name配置,未配置name时会触发失败。
- schema类型不合适:sdk/downloads下载配置定义为数组,不利于管理(申明必选配置)和继承(多schema混合使用时)
- schema未覆盖产品(product)、平台(platform)以及Conan1、conan2等场景的schema配置
- 下载逻辑混乱,download_dependencies中依赖download_buildtools任务,但两个任务间不存在依赖关系,导致场景覆盖不全(1、删除~/rtos_compiler或~/sdk之后,download_buildtools下载成功之前download_dependencies会复制sdk内容,触发失败)。
- 下载的文件名固定存储在~/downloads目录,且以配置项的name标记,当多个产品需要使用不同的配置时会导致文件覆盖,进而产生重复下载。
- 功能错误:download_dependencies执行更快,如果bmc_sdk变更,一般复制~/sdk ~/rtos_compiler动作会快于download_buildtools,导致复制和安装的rtos_compiler和sdk不正确。
修改
bingo已提任务 AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台 和PR AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台 ,计划的优化方案:
- 下载配置由sdk变更为pre_download,每个配置项都是一个对象,包含url和sha256成员,其中bmc_sdk是必选配置(pre_download非必选)
- 下载动作调整到task_prepare任务
- 下载变更为通用逻辑,当下载对象名为bmc_sdk时会做解压功能到~/rtos_compiler和~/sdk
- 为兼容之前将构建工具存储在~/rtos_compiler和~/sdk目录的逻辑,为避免跨目录存储导致的不一致,需要每次都解压bmc_sdk(会增加解压时长)
- scheme定义调整到产品(product)、平台(platform)等所有产品配置项。
配套的manifest配置,请用户按需同步 PR AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台
配置项说明
schema文件新增以下配置内容,其中bmc_sdk是必选配置,hi1711_boot_images是可选配置。
"pre_download": {
"type": "object",
"description": "文件前置下载动作,支持下载各类需要的文件",
"required": ["bmc_sdk"],
"properties": {
"bmc_sdk": {
"description": "openubmc的开发包文件,内置各种工具和配置,该文件必须是一个zip文件,下载后会自动解压到~/sdk、~/rtos_compiler、/usr/bin等安装目录",
"$ref": "#/$defs/download"
},
"hi1711_boot_images": {
"description": "如果你需要构建签名的openubmc镜像,你需要从PAE获取到一个文件名格式为Hi1711_[0-9]{8}_[0-9a-f]{40}.tar.gz的未签名1711启动镜像压缩包,可以使用名为hi1711_boot_images的配置项申明。",
"$ref": "#/$defs/download"
}
},
配置示例
manifest.yml仓中配置示例:
pre_download:
bmc_sdk:
url: https://repo.openubmc.cn/25.09/sdk/bmc_sdk.zip
sha256: 442fad3dfeb9f83bb6b7f55c7486fe0f19149083bd0b148d0ad370127991534c
讨论
请各位 sig-CICD 的伙伴参与方案讨论,本修改会有以下影响:
- 工具会删除sdk/downloads配置,如果用户正在使用此配置,需要在bingo合入后升级到新版本bingo并同步社区manifest仓配置。 – 有使用的请邮件反馈讨论。