下层平台依赖管理方案
更新时间:2025/10/15
在Gitcode上查看源码下层平台依赖管理方案
本文记录外部依赖管理的思路。
1. 问题
openUBMC的构建依赖各种外部制品,常见方式是CMC依赖下层平台制品和构建工具,在日常过程中会遇到下层平台版本号未变更但制品变更的场景。
外部制品不可控带来如下影响:
- 下层平台不可控
- 下层平台变更低感知
- 版本处于一种不确定状态,可能影响重复构建
2. 思路
下层平台管理生成的制品需要有文件指纹校验,在构建系统中使用文件清单记录文件SHA256值,只有经过文件清单校验的外部制品才能进入构建系统,不能通过检查的将报告失败。
上述思路的好处在于外部的依赖在代码仓中可管控、能记录,降低外部变更的影响。
3. 实现方案
借助ArtGet定义的XML文件,将需要校验的文件SHA256值写入对应XML文件中。当通过XML文件下载依赖制品后,根据XML文件中的文件SHA256值与实际的文件SHA256值进行对比,当有文件SHA256值对比不一致时,报告失败并终止构建。
对于需要校验的制品,在XML的对应copy标签下新增verifyFiles标签,其中包含1~N个file标签,file标签内容包括文件名和SHA256值。
XML文件中hash值示例:
xml
<copy>
<source>/foo/bar/file.zip</source>
<dest>foo/bar/</dest>
<verifyFiles>
<file>
<name>file.zip</name>
<hash>xxxxx</hash>
</file>
</verifyFiles>
</copy>
...
<copy>
<source>/foo</source>
<dest>/</dest>
<verifyFiles>
<file>
<name>file.zip</name>
<hash>xxxxx</hash>
</file>
<file>
<name>file.tar.gz</name>
<hash>xxxxx</hash>
</file>
</verifyFiles>
</copy>4. 影响
- 按上述思路整改后,引入新的平台版本时不仅是修改版本号,还需要申明或修改下载的文件SHA256值,如引入的平台制品变更将因文件校验失败而构建失败。
- 当将XML文件归档到构建的制品包中时,需要先删除XML文件中的自定义
verifyFiles标签。