下层平台依赖管理方案
更新时间:2025/10/15
在Gitcode上查看源码

下层平台依赖管理方案

本文记录外部依赖管理的思路。

1. 问题

openUBMC的构建依赖各种外部制品,常见方式是CMC依赖下层平台制品和构建工具,在日常过程中会遇到下层平台版本号未变更但制品变更的场景。

外部制品不可控带来如下影响:

  1. 下层平台不可控
  2. 下层平台变更低感知
  3. 版本处于一种不确定状态,可能影响重复构建

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. 影响

  1. 按上述思路整改后,引入新的平台版本时不仅是修改版本号,还需要申明或修改下载的文件SHA256值,如引入的平台制品变更将因文件校验失败而构建失败。
  2. 当将XML文件归档到构建的制品包中时,需要先删除XML文件中的自定义verifyFiles标签。