Skip to content

V2.1.0

Choose a tag to compare

@SoperRookie SoperRookie released this 13 Sep 09:20
· 53 commits to main since this release
2445440

covhub v2.1.0

从单文件脚本升级为「包 + 数据库 + FastAPI + Vue 看板」的完整形态,新增项目维度、单测 / 新增代码覆盖率、历史版本与对比、报表导出、深色主题与内置接口文档。v1.2.2 之后的 37 个提交(含未单独打标签的
v1.3.0「配置支持 YAML」)全部并入本版。

架构

  • covhub.py 拆成 covhub/ 包,covhub.py 只剩入口壳,命令用法不变。
  • 服务配置与覆盖率历史入库:SQLAlchemy 2 + Alembic,八张表(services / service_state / snapshots / archives / breaks / projects / unit_reports / diffs)。targets.yaml 的 services 段与 data/*/state.json 退役,covhub import 幂等导入。主验证库 MySQL 8,SQLite / PostgreSQL 可跑。- HTTP 层换成 FastAPI:路径与返回体逐字段兼容旧脚本,新增 /api/services、/api/projects、/api/import。- 示例配置改为 covhub.example.yaml + service.example.yaml;lib/ 下两个 JaCoCo jar 进版本库,克隆即可跑。

数据能力

  • 项目维度:服务归属项目(同一时间只属一个),看板按项目分组。
  • 单测覆盖率与新增代码覆盖率:流水线推送 jacoco.xml(POST /api/unit-coverage)与 git diff(POST /api/diff),hub 按行级数据求交集算出「本版本新增代码」的运行时 / 单测覆盖率。分母只算有探针的新增行,total = 0 时百分比为空;diff 里有而报告里没有的文件列进 unmatched,不静默吞掉。
  • 历史版本:结算归档时把新增行附近的源码片段存进归档,历史版本看源码不依赖源码目录仍在。
  • 新增只读接口:/api/overview、/api/services/{name}/detail[?version=]、/source、/compare、/versions、/api/projects/{name}/report。
  • 集成脚本同步:covhub-client.sh 加 unit-coverage / diff,Jenkins 共享库加 pushUnitCoverage / pushDiff。

看板(Vue 3)

  • web/ 独立前端(Vite + Vue 3 + TypeScript + Element Plus + ECharts),产物随 Python 包分发、hub 静态托管,不引任何 CDN。
  • 层级 项目总览 → 项目面板 → 服务详情;建 / 编辑 / 删除项目,勾选即归入 / 移出服务;项目名允许中文。
  • 服务详情:四个环形指标(运行时 / 单测 × 总覆盖 / 新增代码)、趋势图、新增代码明细可展开看源码逐行执行状态、已结算版本、单测历史、配置。
  • 版本下拉切换历史版本(URL 可收藏转发);历史对比:任意两个版本的总量差与按文件的指令覆盖差。
  • 手动触发:立即采集、结算归档、重出报告,执行日志原样弹出。
  • 项目报表:时间范围 7 / 30 / 90 天 / 全部,横条图 + 三张表,导出 CSV / PDF / 打印;服务详情也可导出完整 PDF 报告。
  • 深色主题:浅 / 深 / 跟随系统,图表随主题重画。
  • 视觉规则:只有两个系列色(经色盲可分性校验),覆盖率数字不按阈值着色,语义色只表示运维状态。

文档与工具

  • hub 自带 Swagger UI(/docs,资源打在包里,不引 CDN);/api/openapi.json 不再单独暴露,文件版由 covhub openapi 导出。
  • README、ONBOARDING 全面改写到 2.1。
  • tools/seed_demo.py:两个项目、20 个微服务、各 3–5 个版本的演示数据;tools/demo_services.py:把它们起成挂 agent 的真实 JVM,hub 可实时采集。
  • 测试从零到 262 个用例。

升级说明

  • 需要 Python 3.12:pip install -e .。
  • 首次启动 covhub db upgrade(serve 默认自动做),再 covhub import 导入旧 targets.yaml 与 state.json;data/ 目录兼容。
  • 服务改用 covhub service add 登记;改前端要 cd web && npm run build 并连产物一起提交,hub 机器不需要 node。