2512高可用构建失败报错sign_img.xml拷贝失败

答案内容由AI生成,仅供参考:

构建失败问题分析与解决方案

问题概述

根据提供的日志信息,构建过程在执行 work.task_build_qemu_rootfs 任务时失败,核心错误为:

>> cp /home/workspace/manifest/temp/board_openUBMC/sign_img.xml sign_img.xml  
USER: error: cannot stat '/home/workspace/manifest/temp/board_openUBMC/sign_img.xml': No such file or directory

表明系统尝试复制 sign_img.xml 文件时,源文件不存在。


根本原因分析

1. 源文件缺失

构建流程期望从以下路径获取签名配置文件:

/home/workspace/manifest/temp/board_openUBMC/sign_img.xml

但该路径下文件不存在,导致 cp 命令返回非零退出状态,任务中断。

2. 配置项缺失警告

日志中多次出现以下警告:

  • 不能从 yaml 文件中获取到键值 base/vendor, 没有相关配置
  • 不能从 yaml 文件中获取到键值 base/signature/simple_signer_server, 没有相关配置
  • 不能从 yaml 文件中获取到键值 base/signature/certificates, 没有相关配置

这表明 manifest.yml 配置文件中缺少必要的签名相关字段,尤其是在 basesignature 节下未正确定义 sign_img.xml 的生成或来源。


sign_img.xml 文件的正确来源分析

根据上下文文档和构建逻辑,sign_img.xml 的来源应遵循以下机制:

:white_check_mark: 正确路径与生成方式

sign_img.xml 并非始终存在于固定路径,而是应在构建前期由模板生成或从配置目录复制而来。其标准来源如下:

来源路径 说明
manifest/build/product/<产品名>/signature/sign_img.xml 产品级签名配置模板,用于定制化签名规则
manifest/build_manufacture/signature/sign_img.xml 制造商通用签名配置文件(如日志中可见此路径存在)
动态生成于 temp/board_<产品>/sign_img.xml 构建过程中根据配置自动生成

日志中出现了 /home/workspace/manifest/build_manufacture/signature/sign_img.xml,说明该文件本身在项目中是存在的。


解决方案

:white_check_mark: 方案一:检查并修复 manifest.yml 配置

确保 manifest.yml 中包含 signature 配置段,示例如下:

base:
  vendor: "OpenUBMC"
  signature:
    simple_signer_server: "https://signer.openubmc.cn"
    certificates:
      - file: "${partner_path}/certs/server.crt"
    sign_img: 
      template: "/usr/share/bmcgo/templates/sign_img.xml"  # 或指定自定义模板路径

:magnifying_glass_tilted_left: 若未配置 signature 相关字段,则构建系统无法正确生成 sign_img.xml


:white_check_mark: 方案二:手动验证并准备源文件

  1. 确认源文件是否存在

    ls -l /home/workspace/manifest/build_manufacture/signature/sign_img.xml
    

    如果存在,可临时作为源文件使用。

  2. 创建中间目录并复制文件

    mkdir -p /home/workspace/manifest/temp/board_openUBMC
    cp /home/workspace/manifest/build_manufacture/signature/sign_img.xml \
       /home/workspace/manifest/temp/board_openUBMC/sign_img.xml
    
  3. 重新运行构建任务


:white_check_mark: 方案三:使用 bmcgo publish 或完整构建流程

sign_img.xml 应由构建工具链在 task_build_board_config 阶段自动生成。

建议使用标准命令触发完整构建:

bmcgo publish -bt debug -z WBD -b openUBMC -r openubmc_dev

bingo build -p openUBMC -t debug

:warning: 直接调用底层任务而跳过初始化阶段,可能导致依赖文件未生成。


:white_check_mark: 方案四:检查构建环境与工具版本兼容性

当前环境信息:

  • Conan: 2.13.0(较新)
  • bmcgo (bmngo): 0.7.51
  • bingo: 0.6.121

:red_exclamation_mark:注意:部分旧版 bingo 工具对 Conan 2.x 支持不完善,可能导致依赖解析失败或任务跳过。

建议:

  • 升级至最新版 bingobmcgo
  • 确保 conan remote list 包含有效远程仓库(如 openubmc_dev
  • 执行 conan config install 同步团队配置

推荐排查步骤

  1. :white_check_mark: 检查 manifest.yml 是否包含 base.signature 配置;
  2. :white_check_mark: 确认 /home/workspace/manifest/build_manufacture/signature/sign_img.xml 存在;
  3. :white_check_mark: 检查是否有脚本负责将 signature/sign_img.xml 复制到 temp/board_openUBMC/
  4. :white_check_mark: 使用完整构建命令而非单任务执行;
  5. :white_check_mark: 查看完整构建日志(如 task.log 前序内容)确认是否因前置任务失败导致文件未生成;
  6. :white_check_mark: 清理工作区后重试:
    rm -rf /home/workspace/manifest/temp/*
    bmcgo build -p openUBMC --clean
    

结论

构建失败的根本原因是:构建流程未能正确生成或定位 sign_img.xml 源文件,主要由于 manifest.yml 配置缺失或构建流程不完整所致。

:white_check_mark: 最终解决方案:

  • 补全 manifest.yml 中的 signature 配置;
  • 使用标准构建命令(如 bmcgo publish)启动全流程;
  • 确保构建环境工具版本兼容且配置完整。

:pushpin: 提示:社区版本 bingo 不支持白牌包/签名包构建,若涉及定制化签名,请联系产品接口人获取完整版 bmcgo 工具链。

相关链接:

  1. bingo build报错,任务 work.build.conan 执行失败
  2. bingo生成csr包
  3. 【教学培训篇】新增组件
  4. 执行bmcgo build -b openUBMC -r openubmc_dev构建版本失败
  5. 新增产品 | 文档中心 | openUBMC