*openUBMC bingo支持manifest对bingo工具的版本约束和自动升级-功能详细设计说明书*

<table>
    <tr>
        <td>所属SIG组:</td>
        <td>CICD</td>
    </tr>
    <tr>
        <td>落入版本:</td>
        <td>25.12</td>
    </tr>
    <tr>
        <td>设计人员:</td>
        <td>姚顺</td>
    </tr>
    <tr>
        <td>日期:</td>
        <td>2025.10.14</td>
    </tr>
</table>

**Copyright © 2025 openUBMC Community**

您对&quot;本文档&quot;的复制，使用，修改及分发受木兰宽松许可证, 第2版协议(以下简称&quot;MulanPSL2&quot;)的约束。
为了方便用户理解，您可以通过访问<https://license.coscl.org.cn/MulanPSL2>了解MulanPSL2的概要 (但不是替代)。
MulanPSL2的完整协议内容您可以访问如下网址获取：<https://license.coscl.org.cn/MulanPSL2>。

**改版记录**

<table>
    <tr>
        <th>日期</th>
        <th>修订版本</th>
        <th>修订描述</th>
        <th>作者</th>
        <th>审核</th>
    </tr>
</table>

**List of abbreviations**  **缩略语清单** ：

<table>
    <tr>
        <th>Abbreviations 缩略语</th>
        <th>Full spelling 英文全名</th>
        <th>Chinese explanation 中文解释</th>
    </tr>
</table>

[TOC]

# 1.功能分析
## 1.1 功能背景

当前manifest中bingo满足版本约束时，正常执行命令。
当前manifest中bingo不满足版本约束时，则自动升级bingo为满足约束的最新版本。

## 1.2 功能描述

在manifest配置中描述bingo的版本依赖, 如下所示：
[bingo]
version = [>=0.6.30 <0.6.50]

## 1.3 功能场景

- 社区用户拉取manifest代码
- 执行bingo命令，如当前bingo版本不满足则自动升级到满足版本约束的最新bingo版本。

## 1.4 功能列表

| 功能编号 | 功能标题 | 功能描述 |
| ------- | ------- | -------- |
| 1 | bingo支持manifest对bingo工具的版本约束和自动升级 | bingo支持manifest对bingo工具的版本约束和自动升级 |


# 2.功能设计
## 2.1 总体方案分析

- bingo约束：在manifest中描述bingo版本范围约束
- bingo升级：执行bingo命令前判定当前版本是否满足范围约束，不满足则调用升级程序升级bingo到匹配的范围约束最新版本

### 2.1.1 方案详细设计
#### 2.1.1.1 方案概述

- bingo安装

    在manifest中描述bingo版本范围约束。如：
    [bingo]
    version = [>=0.6.30 <0.6.50]
    此时应升级到0.6.49版本（如存在）。

- bingo 升级

    扩展bingo升级机制，灵活传入范围约束，调用命令就tt


#### 2.1.1.2 开发视图

![](./images/bingo支持manifest版本约束.png)

#### 2.1.1.3 运行视图

不涉及


### 2.1.2 内部依赖分析

不涉及

### 2.1.3 外部依赖分析

不涉及

### 2.1.4 北向接口分析

不涉及

### 2.1.5 兼容性分析

不涉及

### 2.1.6 定制化接口分析

不涉及

### 2.1.7 导入导出分析

不涉及

### 2.1.8 传感器分析

不涉及

### 2.1.9 精准告警事件分析

不涉及

### 2.1.10 系统锁定分析
不涉及

### 2.1.11 用例场景分析

| 场景 | bingo现状 | manifest约束 | 期望结果 |
| ---- | ---- | ---- | --- |
| 不升级bingo | 0.6.50 | >=0.6.50 <0.6.60 | 不升级bingo |
| 升级bingo | 0.6.50 | >0.6.50 <0.6.60 | 升级bingo为满足约束的最新版本 |


# 3.功能实现

## 3.1【功能编号】bingo支持manifest对bingo工具的版本约束和自动升级
### 3.1.1 功能实现设计

- bingo升级

    在manifest配置文件中描述bingo版本约束，如不满足约束则升级到满足约束的最新版本

    流水线：不影响。

### 3.1.2 功能详细设计

代码实现逻辑

![](./images/版本约束代码逻辑.png)

### 3.1.3 开发者测试
功能覆盖验证，不涉及DT。

#### 3.1.3.1 单元测试
不涉及

#### 3.1.3.2 集成测试
不涉及