Repository navigation
Releases: SoperRookie/coverage-hub
Releases · SoperRookie/coverage-hub
Release list
v2.6.5
-
- 服务详情页的运行时趋势图改为按天 / 按日期区间看:新接口
GET /api/services/{name}/trend?from=&to=
- 服务详情页的运行时趋势图改为按天 / 按日期区间看:新接口
- 按 hub 本地日历日取区间内的全部快照(默认今天),卡片上加日期区间选择器(今天 / 昨天 / 最近 7 天 /
- 最近 30 天快捷项,不能选未来)。原来跟着详情下发的「最近 40 次」在 5 分钟一轮下只有三个多小时,
- 既看不出一天的走势也回不了头;
detail里的runtime.history字段保留不变。 -
- 趋势图横轴改成时间轴:采集停过的那段在图上留出空白,而不是和正常间隔画得一样宽;横轴撑满所选日期。
- tooltip 带版本与快照类型(轮询 / 手动 / 结算 / 重启封存)。区间超过 1500 个点服务端均匀抽稀(首尾保留)。
- 采集停过的时段(相邻快照间隔超过正常间隔的 1.5 倍)折线断开、悬停不出 tooltip —— 原来轴触发的 tooltip
- 会吸到几小时外最近的点,把那个点的数字端出来,像是那会儿还有覆盖率。
-
- 项目报表也能按日期区间看:
GET /api/projects/{name}/report多了from/to(两端都含,按本地日历日切,
- 项目报表也能按日期区间看:
- 只给一端就看那一天),给了就不看
days;页面上「近 7 / 30 / 90 天 / 全部」旁边加了日期区间选择器, - 区间进 URL(
?from=&to=),导出的 CSV / PDF 文件名带上区间。返回体多了from/to/until。 -
- Element Plus 组件文案切到中文(日期选择器的月份星期、分页的「共 N 条」原来是英文)。
V2.2.1
V2.1.0
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。
v1.2.2:结算前做数据体检,补 push 的接入文档与时序图
结算前体检
predeploy 在归档前跑一次 diagnose,把「安静地归档一份废数据」变成会说话的。
实测:classfiles 指错时报告是 0.0%,以前只能等人去看报告才发现,现在结算当场
就喊出来,并说明最可能的原因。
匹配率低不阻断结算,这是有意的:走到 predeploy 说明服务马上要停,exec 是
不可再生的 —— 因为指纹对不上就拒绝归档,只会让这段数据既对不上、又没留下。
结论写进 manifest 的 matchRate / healthVerdict,也记进该版本的结算记录,
日后查「这版数字能不能信」不用翻文件。
文档
ONBOARDING 补 Step 5 的 E 节:push 通道怎么配、多副本要注意什么。
之前 push 只在 README 里有,而接入指南才是别人照着做的那份。
前提清单里「能访问 agent 端口」改成「连不通就改用 push」,
常见问题补了三条 push 的典型症状。
图
新增 05-push.puml:认领连接(agent 不会主动报自己是谁)、向多副本取数、
实例断连的处理、以及两条限制。
02 的标题标明它画的是 pull 通道;03 加上结算前的体检步骤;
对应表补上 PushCollector / check_data_health / 看板那几个函数。