仓库容器构建与测试验证报告

webui  |  验证日期 2026-08-23T22:00:00 ~ 2026-08-23T22:13:00
仓库:webui远程:https://gitcode.com/openUBMC/webui.git提交:c66ee5e !533 feat: 支持devcontainer配置总耗时:780s
构建
成功
123s · bingo build --stage=dev
单元测试
成功
211/211 通过
检查项(lint/tsc)
失败
33s
静态检查(pre-commit)
成功
8/9 通过
DevContainer
已配置
.devcontainer

验证结论

构建:成功 — bingo build --stage=dev 在 openUBMC ubuntu:24.04.2_26.06 容器中成功构建并打包为 Conan 组件 webui/1.100.94@openubmc.dev/dev

单元测试:成功 — vitest 单元测试 211/211 通过(需设置 TZ=Asia/Shanghai)

检查项:失败 — README 测试章节的 lint(shell 花括号展开)与 vue-tsc(tsconfig 废弃选项+5969 类型错误)两项检查命令在当前环境均无法通过,属配置/兼容性问题而非构建缺陷

总体:仓库可在容器中成功构建并完成单元测试;README 列出的 lint 与 vue-tsc 检查项因配置兼容性问题失败,建议维护方更新 lint 脚本(引号包裹 glob)与 tsconfig(移除废弃选项并修复暴露的类型错误)

环境规格

项宿主机容器
架构x86_64x86_64
CPUIntel(R) Xeon(R) Gold 6151 CPU @ 3.00GHz (32核)32核
内存62Gi62Gi (无限制)
磁盘197G (46G available)—
DockerDocker version 29.1.3, build 29.1.3-0ubuntu3~24.04.2—
操作系统—Ubuntu 24.04.3 LTS

镜像来源

镜像:swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06

选择理由:仓库 .devcontainer/devcontainer.json 指定镜像 swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06,README 与 openUBMC 构建指导书推荐同源基础镜像 ubuntu:24.04.2;该镜像已预装 bingo(0.7.37)/conan(2.30.0)/node(20.18)/gcc(9.5)/交叉编译器(/opt/RTOS, /opt/hcc_arm64le) 等全部构建工具,无需再执行 init.py

容器预装工具

python3 3.12.3node v20.18.0npm 10.8.2conan 2.30.0bingo 0.7.37gcc 9.5.0make 4.3git 2.43.0

文档阅读理解

提取项来源内容
架构要求README.md - 系统要求章节x86-64(amd64)
推荐镜像.devcontainer/devcontainer.json + README.md + openUBMC 构建指导书(manifest README)swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06(devcontainer 指定,预装全部构建工具)
构建依赖README.md 系统要求 + openUBMC 构建指导书 + conanfile.py
  • 操作系统 Ubuntu 24.04 LTS(仅支持此版本)
  • Python >= 3.10(init.py 运行依赖)
  • Node.js >= 18 LTS(前端开发依赖)
  • bingo(openUBMC 构建工具链,由 manifest 仓库 init.py 安装)
  • Conan(C/C++ 包管理器,2.x,由 init.py 安装)
  • Conan 远程仓库 openubmc_opensource(conan.openubmc.cn,需社区账号登录)
  • npm 依赖(package.json 声明,构建时 npm install 自动安装)
构建命令README.md - 组件级构建章节cd /home/workspace/webui && bingo build --stage=dev
UT 命令README.md - 测试章节 + package.json scriptsnpm test(vitest 单元测试,tests/unit/);npm run lint(eslint 检查);npx vue-tsc --noEmit(TypeScript 类型检查)
样例命令README.md - 本地开发调试章节仓库为 Web 前端项目,README 仅提供 npm run dev 开发服务器(长驻进程,非可执行样例);无独立样例程序。README 测试章节的 lint 与 vue-tsc 作为验证检查项
特殊依赖README.md 环境依赖章节 + openUBMC 构建指导书
  • Conan 远程仓库 conan.openubmc.cn/openubmc_opensource(需社区账号 conan remote login 认证,否则 bingo build 拉取依赖失败)
  • 交叉编译器 /opt/RTOS、/opt/hcc_arm64le(镜像已预装,bingo 构建工具检测依据)

构建详情

状态:成功   耗时:123s   命令:bingo build --stage=dev

Conan 包引用:webui/1.100.94@openubmc.dev/dev#3ceaca5560769a8400a1cad37d44b359:4e7cc662fbaab126bc8c2686c501baa329a6cc13#58f8bde2e8340a49690987d6b2d89442

缓存路径:~/.conan2/p/b/webui4fde038d6ba89/p

构建产物

名称路径大小说明
web 前端静态资源opt/bmc/web/htdocs/4.4 MBassets(333 个文件, JS/CSS/图片/字体) + index.html(1.4KB) + font + image + style + style_config.json
Conan 组件包~/.conan2/p/b/webui4fde038d6ba89/p—webui/1.100.94@openubmc.dev/dev,含 permissions.ini/index.html/28 png/69 svg/3 jpg/9 ttf/9 eot/9 woff/269 gz

单元测试详情

状态:成功   耗时:17s   框架:vitest 0.28.5(环境:happy-dom)   命令:TZ=Asia/Shanghai npx vitest run

总计:211   通过:211   失败:0

说明

检查项详情(README 测试章节)

状态:失败   耗时:33s

npm run lint(eslint 检查) [失败]

输出摘要:容器 /bin/sh 软链至 /bin/bash,npm 脚本中的 src/**/*.{js,ts,vue,jsx,tsx} 被 bash 花括号展开为 5 个独立模式;src 下无 .js 文件(仅 .ts/.vue),致 src/**/*.js 无匹配,eslint 8.57.1 报错退出(exit 2)

耗时:1秒

诊断:用引号包裹 glob 单独执行可正常运行,实际检出 1087 个问题(831 errors / 256 warnings),其中 575 errors + 228 warnings 可由 --fix 自动修复

npx vue-tsc --noEmit(TypeScript 类型检查) [失败]

输出摘要:tsconfig.json 启用的 suppressImplicitAnyIndexErrors 在 TypeScript 5.5.2 中已废弃并被拒绝,类型检查无法启动(exit 2)

耗时:32秒

诊断:临时补 ignoreDeprecations=5.0 并放大堆至 8GB 后可运行,但暴露 5969 个真实类型错误(多为 TS7053 隐式 any 索引访问),即 suppressImplicitAnyIndexErrors 之前屏蔽的内容;vue-tsc 0.34.11 在默认堆下还会 OOM 崩溃

静态检查能力

启用:True   总结:检测到 pre-commit 配置(9 个 hooks,8 通过 1 跳过),未检测到 lint-runner 配置

pre-commit

配置:True   状态:成功   耗时:30s

hooks:共 9,通过 8,失败 0,跳过 1

跳过 check-sr — 仓库无 .sr 后缀文件(no files to check)

lint-runner

配置:False

DevContainer

启用:True   目录:.devcontainer   文件:devcontainer.json

已配置 devcontainer,基于 openUBMC ubuntu:24.04.2_26.06 镜像,workspaceFolder=/workspace,预装 bingo/conan/node/gcc/交叉编译器及 VSCode 扩展(cpptools/cmake-tools/python/ruff 等),forwardPorts=[8000,8080]

过程时间线

2026-08-23T22:00:00 [start] 开始验证流程 → 已启动
2026-08-23T22:00:10 [document_reading] 阅读 README.md、package.json、conanfile.py、vite.config.ts、.devcontainer/devcontainer.json 及 openUBMC 构建指导书(manifest README) → 成功
sections_read: ["系统要求", "环境依赖", "组件级构建", "测试", "本地开发调试"] build_entry: bingo build --stage=dev test_entries: ["npm test(vitest)", "npm run lint", "npx vue-tsc --noEmit"]
2026-08-23T22:00:30 [static_analysis_scan] 检查仓库 pre-commit 配置 → 已配置
config_file: .pre-commit-config.yaml hook_repos: ["gitcode.com/openUBMC/pre-commit-hooks@0.1.1", "gitcode.com/gh_mirrors/pr/pre-commit-hooks@v6.0.0"] hooks_count: 9
2026-08-23T22:00:35 [static_analysis_execution] 执行 pre-commit run --all-files → 成功
passed: 8 failed: 0 skipped: 1
2026-08-23T22:01:00 [static_analysis_scan] 检查 lint-runner 配置 → 未配置
searched_patterns: [".lint-runner.yaml", ".lint-runner.json", "lint-runner.config.*", ".lintrunner.toml"]
2026-08-23T22:01:10 [devcontainer_scan] 检查 .devcontainer 目录及配置 → 已配置
config_dir: .devcontainer files: ["devcontainer.json"] image: ubuntu:24.04.2_26.06
2026-08-23T22:01:20 [image_selection] 选择基础镜像 → openUBMC ubuntu:24.04.2_26.06(devcontainer)
selection_reason: .devcontainer/devcontainer.json 指定该镜像且已预装 bingo/conan/node/gcc/交叉编译器,README 与构建指导书推荐同源 ubuntu:24.04.2
2026-08-23T22:01:30 [container_setup] 拉取镜像并启动容器 ttfhw-webui-env → 成功
image: swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06 tools_preinstalled: True
2026-08-23T22:02:30 [dependency_installation] Conan 远程仓库登录认证(镜像已预装 bingo/conan,免 init.py) → 成功
remote: openubmc_opensource user: zhao****(已脱敏) note: 凭证经环境变量注入,未落盘明文
2026-08-23T22:04:15 [build_attempt] 首次构建尝试 → 失败
error: 源码缺 .git,bingo 调用 git remote -v 失败(exit 128)
2026-08-23T22:04:30 [problem_resolution] 补传 .git 目录至容器 → 已解决
solution: docker cp 仓库 .git 到 /home/workspace/webui source: bingo 构建前需 git 元数据
2026-08-23T22:04:40 [build_retry] 重新执行 bingo build --stage=dev → 成功
concurrency: vite/esbuild 自管理 concurrency_ratio: 未显式限制(JS 构建) package_ref: webui/1.100.94@openubmc.dev/dev
2026-08-23T22:07:30 [ut_execution] 执行 vitest 单元测试(默认 UTC 时区) → 部分成功
total: 211 passed: 210 failed: 1 failed_case: date.spec.ts 时区敏感
2026-08-23T22:09:00 [ut_execution] 设置 TZ=Asia/Shanghai 后重跑 vitest → 成功
total: 211 passed: 211 failed: 0 note: date 测试按中国时区编写
2026-08-23T22:07:55 [sample_execution] 执行 README 测试章节检查项(npm run lint / npx vue-tsc --noEmit) → 失败
lint: 失败(/bin/sh→bash 花括号展开,src/**/*.js 无匹配) vue_tsc: 失败(tsconfig 废弃选项 suppressImplicitAnyIndexErrors 被 TS5.5 拒绝;诊断暴露 5969 个类型错误)
2026-08-23T22:12:00 [cleanup] 停止并删除容器 ttfhw-webui-env → 成功
2026-08-23T22:13:00 [report_generation] 生成验证报告并转换为静态 HTML → 成功
output_file: verification_report_WSL_webui_20260824.json html_file: verification_report_WSL_webui_20260824.html

执行日志(17 步)

#1 pre-commit run --all-files(宿主机本地执行)成功 · 30s · rc=0

时间:2026-08-23T22:00:30   返回码:0

输出:

Check JSON...Passed
Check YAML...Passed
prettier...Passed
trim trailing whitespace...Passed
fix end of files...Passed
check for merge conflicts...Passed
check for added large files...Passed
check for case conflicts...Passed
detect private key...Passed
Check .sr Files...(no files to check)Skipped
#2 find . -name '.lint-runner.*' -o -name 'lint-runner.config.*' -o -name '.lintrunner.toml'成功 · 1s · rc=0

时间:2026-08-23T22:01:00   返回码:0

输出:

未找到 lint-runner 相关配置文件
#3 ls .devcontainer/成功 · 1s · rc=0

时间:2026-08-23T22:01:10   返回码:0

输出:

devcontainer.json(image=swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06,workspaceFolder=/workspace,forwardPorts=[8000,8080])
#4 docker pull swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06成功 · 2s · rc=0

时间:2026-08-23T22:01:20   返回码:0

输出:

Status: Image is up to date(镜像已存在本地)
#5 docker run -d --name ttfhw-webui-env -w /home/workspace swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06 tail -f /dev/null成功 · 1s · rc=0

时间:2026-08-23T22:01:30   返回码:0

输出:

Container ID: c92b391246f4...
#6 docker exec ttfhw-webui-env bash -lc 'python3 --version; node --version; conan --version; bingo --version; gcc --version'成功 · 2s · rc=0

时间:2026-08-23T22:02:00   返回码:0

输出:

Python 3.12.3; node v20.18.0; npm 10.8.2; Conan 2.30.0; bingo 0.7.37; gcc 9.5.0(镜像已预装全部工具)

备注:镜像已预装 bingo/conan/node/gcc,无需执行 init.py;仅缺 Conan 远程登录认证

#7 conan remote login openubmc_opensource <用户名已脱敏> -p <密码已脱敏>成功 · 3s · rc=0

时间:2026-08-23T22:02:30   返回码:0

输出:

Authenticated in remote 'openubmc_opensource' with user 'zhao****'
Changed user of remote 'openubmc_opensource' from 'None' (anonymous) to 'zhao****' (authenticated)

备注:使用社区账号登录 Conan 远程仓库,凭证通过环境变量注入以避免特殊字符转义

#8 conan search --remote openubmc_opensource '*'成功 · 2s · rc=0

时间:2026-08-23T22:02:40   返回码:0

输出:

openubmc_opensource
  abseil/20250127.0.004@openubmc/stable
  account/1.90.42@openubmc/stable(远程仓库可访问)
#9 tar cf - . | docker exec -i ... tar -xf - -C /home/workspace/webui(复制源码入容器,首次未含 .git)成功 · 3s · rc=0

时间:2026-08-23T22:03:00   返回码:0

输出:

源码已复制至容器 /home/workspace/webui
#10 cd /home/workspace/webui && bingo build --stage=dev(首次尝试,源码缺少 .git)失败 · 3s · rc=255

时间:2026-08-23T22:04:15   返回码:255

输出:

conan版本: 2.30.0
ERROR: Command '['/usr/bin/git', 'remote', '-v']' returned non-zero exit status 128.
ERROR: 请查看日志信息
构建失败

错误:

bingo 执行 git remote -v 失败:复制源码时排除了 .git 目录,容器内无 git 元数据

备注:bingo 构建前会调用 git remote -v 获取远程地址,仓库需保留 .git 目录

#11 tar cf - .git | docker exec -i ... tar -xf - -C /home/workspace/webui(补传 .git 目录)成功 · 3s · rc=0

时间:2026-08-23T22:04:30   返回码:0

输出:

origin https://gitcode.com/openUBMC/webui.git;HEAD c66ee5e
#12 cd /home/workspace/webui && export OPENUBMC_LICENSE=true && bingo build --stage=dev(重新构建)成功 · 123s · rc=0

时间:2026-08-23T22:04:40   返回码:0

输出:

npm install ... added 1034 packages
vite build ✓ built in 37.81s
gzipper: 426 files compressed
npm install --production ... added 94 packages
webui/1.100.94@openubmc.dev/dev: Package '4e7cc662fbaab126bc8c2686c501baa329a6cc13' built
Created package revision 58f8bde2e8340a49690987d6b2d89442
构建成功

备注:并发由 vite/esbuild 自管理;构建产物发布到 Conan 本地缓存 ~/.conan2/p/b/webui4fde038d6ba89/p

#13 cd /home/workspace/webui && npm install(恢复含 devDependencies 的完整依赖,用于测试)成功 · 22s · rc=0

时间:2026-08-23T22:07:00   返回码:0

输出:

added 1034 packages in 21s(devDependencies 包含 vitest/eslint/vue-tsc)

备注:conanfile.py 的 package() 步骤执行了 npm install --production,移除了 devDeps;测试前需重装完整依赖

#14 npm run lint(eslint src/**/*.{js,ts,vue,jsx,tsx} --fix)失败 · 1s · rc=2

时间:2026-08-23T22:07:30   返回码:2

输出:

ESLint: 8.57.1
No files matching the pattern "src/**/*.js" were found.
Please check for typing mistakes in the pattern.

错误:

容器 /bin/sh 软链至 /bin/bash,bash 会对 {js,ts,vue,jsx,tsx} 做花括号展开为 5 个模式;src 下无 .js 文件(仅 .ts/.vue),故 src/**/*.js 无匹配导致 eslint 报错退出(exit 2)

备注:诊断:用引号包裹 glob 执行 npx eslint "src/**/*.{js,ts,vue,jsx,tsx}" 可正常运行,实际检出 1087 个问题(831 errors, 256 warnings),其中 575 errors + 228 warnings 可由 --fix 自动修复

#15 npx vue-tsc --noEmit失败 · 32s · rc=2

时间:2026-08-23T22:07:55   返回码:2

输出:

tsconfig.json(17,5): error TS5101: Option 'suppressImplicitAnyIndexErrors' is deprecated and will stop functioning in TypeScript 5.5. Specify compilerOption '"ignoreDeprecations": "5.0"' to silence this error.

错误:

tsconfig.json 启用的 suppressImplicitAnyIndexErrors 选项在 TypeScript 5.5.2(package.json 钉版)中已废弃并被拒绝,类型检查无法启动(exit 2)

备注:诊断:临时 tsconfig 补 ignoreDeprecations=5.0 并放大堆至 8GB 后可运行,但暴露 5969 个真实类型错误(多为 TS7053 索引签名隐式 any),正是 suppressImplicitAnyIndexErrors 之前屏蔽的内容;不放大堆时 vue-tsc 0.34.11 还会 OOM 崩溃

#16 npx vitest run(容器默认 UTC 时区)失败 · 17s · rc=1

时间:2026-08-23T22:08:30   返回码:1

输出:

Test Files 1 failed | 9 passed (10)
Tests 1 failed | 210 passed (211)
FAIL tests/unit/utils/date.spec.ts > should format hour correctly:expected '20' to be '12'

错误:

date.spec.ts 用 new Date('2024-03-15T12:34:56.789Z') 构造 UTC 12:34 的时间,却断言 HH='20'/hh='08'(即期望按 UTC+8 中国时区解释),容器时区为 Etc/UTC 导致 hour 返回 12 而非 20

备注:时区敏感的测试用例,非代码缺陷

#17 TZ=Asia/Shanghai npx vitest run(设置中国时区后重跑)成功 · 17s · rc=0

时间:2026-08-23T22:09:00   返回码:0

输出:

Test Files 10 passed (10)
Tests 211 passed (211)
Duration 3.38s
JUNIT report written to tests/reports/js_test.xml

备注:设置 TZ=Asia/Shanghai 后全部用例通过;date 测试默认按中国时区编写

文档缺口

遇到的问题与解决

2026-08-23T22:04:15 首次 bingo build --stage=dev 失败:bingo 调用 git remote -v 返回 exit...

问题:首次 bingo build --stage=dev 失败:bingo 调用 git remote -v 返回 exit 128

解决:补传仓库 .git 目录到容器 /home/workspace/webui 后重新构建

来源:bingo 构建前需 git 元数据;复制源码时排除了 .git

2026-08-23T22:07:30 conanfile.py 的 package() 步骤执行 npm install --production,移除了 d...

问题:conanfile.py 的 package() 步骤执行 npm install --production,移除了 devDependencies,导致后续无法直接运行 vitest/eslint/vue-tsc

解决:测试前重新执行 npm install 恢复完整依赖(含 devDependencies)

来源:conanfile.py 第628行:self.run(f'npm install --production')

2026-08-23T22:07:55 npm run lint 失败:src/**/*.{js,ts,vue,jsx,tsx} 被 bash 花括号展开,sr...

问题:npm run lint 失败:src/**/*.{js,ts,vue,jsx,tsx} 被 bash 花括号展开,src/**/*.js 无匹配

解决:属 shell 兼容性问题,不改源码;诊断时用引号包裹 glob 验证 eslint 实际检出 1087 个问题

来源:package.json scripts.lint + 容器 /bin/sh→bash

2026-08-23T22:07:55 npx vue-tsc --noEmit 失败:tsconfig.json 的 suppressImplicitAnyI...

问题:npx vue-tsc --noEmit 失败:tsconfig.json 的 suppressImplicitAnyIndexErrors 在 TS 5.5.2 中被废弃拒绝

解决:属配置兼容性问题,不改源码;诊断用临时 tsconfig 补 ignoreDeprecations=5.0,暴露 5969 个真实类型错误

来源:tsconfig.json 第17行 + package.json typescript 5.5.2

2026-08-23T22:08:30 vitest 默认 UTC 时区下 date.spec.ts 1 例失败(expected '20' to be '12...

问题:vitest 默认 UTC 时区下 date.spec.ts 1 例失败(expected '20' to be '12')

解决:设置 TZ=Asia/Shanghai 重跑,211/211 全部通过

来源:tests/unit/utils/date.spec.ts 第14、38 行:用 UTC 时刻按中国时区断言

本报告由自动化容器验证流程生成 · 所有数据静态内嵌于本 HTML · 敏感凭证已脱敏