如何使用自动部署功能
更新时间: 2025/10/11
在Gitcode上查看源码

背景

openubmc的开发者在产品验证时常见流程是构建 - 传包 - 升级 - 验证,其中的传包和升级动作需要在构建完成后人工完成,效率较低,特别是需要升级多个环境时低效且易错。

bingo的deploy独立部署和构建联动部署两种模式,可实现构建-传包-升级联动。

独立部署

bingo提供了deploy部署子命令,支持-f参数指定待部署文件,自动执行登录、上传、升级、升级状态检测和退出登录操作,部署过程使用Rest接口,需要确保Rest接口可用。

shell
xxxx@DESKTOP:~/$ bingo deploy --help
usage: bingo deploy [-h] -f FILENAME

BMC产品包部署升级,待部署主机配置由. openubmc_config.yml文件管理

optional arguments:
  -h, --help            show this help message and exit
  -f FILENAME, --filename FILENAME
                        待部署的文件

TIP

deploy子命令当前处于灰度发布状态,bingo help不会显示该命令,但开发者可以使用。

构建联动部署

bingo build 构建hpm包时支持指定--deploy命令,出包完成后会自动调用部署命令,逻辑与独立部署完全相同。

配置

TIP

部署配置项已被bmcgo config命令收编。

自动部署依赖开发者配置的待部署主机信息,如IP、端口、用户名和密码等,我们使用.openubmc_config.yml配置文件记录开发者的环境基本信息,其配置schema模型为/usr/share/bingo/schema/openubmc_config.schema.json,开发者可安装redhat.vscode-yaml插件,该插件会读取配置模式并检查配置正确性,指导开发者正确配置。

开发者需要手动创建.openubmc_config.yml文件,并根据实际需要将配置文件放在合适的位置,如manifest的同级目录或上级目录。

deploy命令执行时会当前路径开始向上递归查找,找到第一个.openubmc_config.yml配置文件即可为效的配置文件,配置项hosts即是自动部署的bmc主机基本信息,支持多个主机。

当系统配置有多个主机时,部署命令会启动多个进程并行部署。

配置示例:

yaml
# yaml-language-server: $schema=/usr/share/bingo/schema/openubmc_config.schema.json
hosts:
   - ip: x.x.x.x
     username: xxx
     password: ******
     port: 443
   - ip: y.y.y.y
     username: yyy
     password: ******
     port: 443

WARNING

部署过程受账号、网络、会话、代理、存储、设备状态等多方面影响,失败需要使用者自己定位,构建工程不提供直接支持。

常见失败场景:1、网络不可达(https_proxy网络代理开启、vpn未正确开启、bmc网络未启用、bmc正在重启);2、正在升级;3、/tmp分区空间不足;4、账号密码不正确;5、用户无权限;6、不支持的hpm包