Files
H100PowerManger/README.md
T
zjk 48be5115c9 构建/部署:切换 Ubuntu 22.04 交叉编译环境,新增板卡部署工具
- ci/Dockerfile:基础镜像 20.04 → 22.04(板卡实测为 Orange Pi Jammy,
  旧 focal 镜像保留为 h100-power-manager-ci:arm64-focal)
- scripts/build-arm64-image.sh:arm64 镜像构建(支持 --force 重建)
- scripts/build-arm64.sh:日常交叉编译(产物输出 bin/arm64/,与本地隔离)
- scripts/deploy.sh:板卡部署(推送二进制+mission,安装 3 个 systemd 服务)
- missions/h100.moos:板卡专用 mission 配置
- .gitignore:忽略 build-arm64/、webassets_gen.h 等构建产物
2026-08-19 14:32:46 +08:00

61 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# H100PowerManger
H100 能源管理程序
[![CI](https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/actions/workflows/ci.yml/badge.svg)](https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/actions)
## 测试报告
每次 CI 运行后自动生成测试报告:
- [最新测试报告 (Markdown)](https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/src/branch/test-reports/test-report.md)
- [JUnit XML](https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/raw/branch/test-reports/junit.xml)
## 自动化测试(PowerManger)
CI 在 aarch64 (QEMU) 环境下运行两类测试,**不改动任何 `src/` 生产代码**:
**单元测试(GoogleTest,`PowerMangerTests`,56 例)**
- `DriverTest`:10 个工况的设备表生成(STANDBY/岸基备航/水中备航/巡航/高速/上浮下潜/浮调/水下侦查/水面侦查/DJ)+ 设备状态读写 + JSON 往返
- `SystemDataTest`:4 类配电/CCU 反馈的故障检测(断路器 0x55/0xAA/0x5A 映射、绝缘低、电源失电、漏水、DCDC、继电器位提取、缩放)+ 故障码集合/等级 + 漏水位
- `FaultMapTest`:锂电池故障表(54) / 配电故障表(45) 完整性
- `UpmsgTest`:上位机/外部通信 JSON 消息解析与序列化往返
- `UdpCommTest`:UDP 校验和 / 消息头识别 / 校验解析 / 日期
- `PmSysvariableTest`:`#pragma pack(1)` 协议结构体大小/偏移 + 枚举完整性
- `SqliteTest`:用裸 sqlite3 读回校验 10 个 `insertData` 写入
**集成测试**
- 冒烟:MOOSDB + `pPowerManger` 拉起存活
- UDP 回环:`udpFeeder` 发送真实 CCU 反馈 → 校验 `power_data.db` 落行(验证 UDP→SystemData→SQLite 全链路)
本地跑测试:需要 GoogleTest(`git clone https://gitea2.zhaojingkui.xyz/zjk/googletest.git` 后 `cmake && make && make install`),然后 `./build.sh` 即可。
## 构建产物(Gitea Releases,手动部署)
CI 构建的 aarch64 二进制(RK3588 / Ubuntu 22.04,板卡实测为 Orange Pi 5 Plus 的 Jammy 系统)会发布到 Gitea Releases,供手动下载部署:
- **版本号 Release**:推送 `v*` tag(如 `v1.0.0`)时创建,正式版
→ `https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/releases/tag/v1.0.0`
- **latest Release(测试)**:每次 `main` push 时更新,标记为预发布(测试用)
→ `https://gitea2.zhaojingkui.xyz/zjk/H100PowerManger/releases/tag/latest`
### 发布流程(CI 自动执行,仅测试通过后发布)
`Publish release` / `Publish latest release` 步骤(`if: success()`,即构建 + 测试全部通过才发布)用 `${{ secrets.CI_TOKEN }}` 调 Gitea API 完成:
1. **创建 Release**:`POST /releases`
2. **删除旧 latest**(仅 latest):`DELETE /releases/tags/latest`
3. **上传附件**:`POST /releases/{id}/assets?name=pPowerManger`(multipart 字段 `attachment`)
4. **按 `github.ref` 分支处理**:
- `refs/tags/v*` → 直接为该 tag 创建版本号 Release
- `refs/heads/main` → `git tag -f latest && git push -f origin latest`,删除旧 latest Release,重建为 prerelease,再上传二进制
5. **Release body** 自动带上:commit / 时间 / 测试报告链接 / 手动部署命令
### 手动部署到板卡
从 Releases 页面下载 `pPowerManger` 后,手动推送到板卡(仅推送,不自动重启):
```bash
rsync -avz pPowerManger root@192.168.0.223:/root/work/moos_ws/moos-ivp-extend/bin/pPowerManger
```