由于收集材料时没有具体记录文件来源,参考文献栏暂时为空。若有人知道来源,请在评论区与我联系,我会将来源备注于此,谢谢。而且若要转载,请务必注明转载地址。在公司实习的时候图片一直上传失败,实习结束后,图片就找不到了,所以图片可能就无法上传了。
一、 开发背景
为了提升软件产品的研发效率,越来越多的团队选择使用敏捷开发模式,借助各类研发工具链工具,实现合理高效的管理整个研发流程。然而随着项目的规模不断扩大,在研发流程的各个阶段都有可能出现风险阻碍研发进度,为了保障项目进度的顺利推进,一个全面展示研发流程信息的平台迫在眉睫。
二、 预研目标
本次预研的目标是全面研究Hygieia软件。
三、 Hygieia
(一) 软件简介
Hygieia 是 CapitalOne 公司内部孵化的一个项目,目的是解决 DevOps 工具链中的数据碎片化的问题,Hygieia 为不同的工具提供了收集数据的 Collector,将数据存储在 MongoDB 里,然后进行数据可视化的展示。可视化地提供交付流水线全过程的有效反馈。Hygieia有两种完备的仪表盘来可视化CI/CD流水线信息,这两种仪表盘分别为工程师和执行者设计。官网地址:http://capitalone.github.io/Hygieia/getting_started.html
(二) 功能介绍
图 1
A. 团队仪表盘
组件视图
展现产品细节信息,包括当前Sprint中的Feature、代码提交情况、持续集成活动,代码分析、安全分析、单元测试、功能测试结果、部署和环境状态等。可以管理配置CI/CD流水线中的多种DevOps工具。可以选择显示哪些部件的信息,如图 2。可打分来促进组织内良性竞争,如图 3。
图 2
图 3
流水线视图
如图 4,展现每个组件从开发到测试,再到部署的整个生命周期过程,如提交编号和提交日期,还可以设置具体有哪些环节和环节名称。
图 4
云视图:展现应用实例、资源占用率等信息。
云 – 总览视图:
将所给云账号的信息可视化。功能如图 5所示。
图 5
云-细节视图:
显示所给账号的如图 6所示信息。
图 6
B. 产品仪表盘
展现每个配置的产品的从开发到部署的整个生命周期过程。如图 7。
图 7
提交级:
• 绿盒子代表了不超过两个标准偏差(standard deviations)的提交
• 红盒子代表超过了两个标准偏差的提交次数
•
• 图 8
构建级:
图 9
每一级的具体提交信息:
图 10
部署级:
图 11
产品级:
图 12
流水线健康度详细信息:
图 13
图 14
B. Portfolio界面:显示文件主人的所有测试结果以及文件主人的所有产品的事件。如图 15。
图 15
界面详细讲解如下。
图 16
组件信息 描述
指标(Metric)名 当前文件的状态
指标值 根据portfolio里所有信息
What’s this? 点击这里去看指标的简短定义
指标分解 在portfolio层次组成指标真的不同的成分
详情 点击此按钮去看Portfolio指标界面,
产品 点击此按钮去看Products界面
时间戳下的趋势暗示 90天内的指标变化趋势
表 1
向上红箭头 – 在过去90天里开源违规或产品问题恶性增长
向上绿箭头 – 通过最新执行的自动化测试百分比良性增长
向下红箭头 – 相关产品组件的产品发布数量恶性下降
向下绿箭头 – 代码问题良性下降
无状态 – 没有足够数据
指标详细内容如下
内容 定义
Blocker 重要程度被标记为blocker的发生时间的组件数量
Components Reporting 数据成功收集的组件百分比
Technical Debt 用来解决现有问题的时间。如果按天显示则默认一天花费8小时
Open Incidents 开放状态下产品问题的总数
Mean Time to Resolve 问题发现到解决所经过的时间
表 2
C. 产品界面
a) 事件发生次数的总数显示
b) 不同组件的分值还有当前状态的解释
c) Portfolio里的所有产品列表还有指标的趋势预测
d) 点击Details可以跳到组件详情界面
e) 点击Change Metric来看其他指标的详情
图 17
另一种产品界面,可以通过调节配置显示。
图 18
D. 产品详情界面
一个执行者所管理的全部应用都被显示在这个界面。
a) Portfolio下的所有产品列表
b) 每一个产品的各种指标值和相应趋势
c) 用于计算指标的组件数据百分比
d) 点击Details可查看Components界面
e) 点击Change Portfolio查看其它执行者的Portfolio
图 19
E. 组件详情界面
显示了一个产品的组件信息。
f) 事件发生次数的图形化显示
g) 产品中所有组件的重要级,重要级主要有block, critical, major
h) 产品的所有组件列表
图 20
(三) 工程架构
图 21
层次名称 描述
UI层 作为Dashboard供研发人员根据需求进行配置,最终实现devops的流程展现。
API层 包含Hygieia API和审计API。Hygieia API包含所有典型的Rest API服务。作为整个系统的桥梁,接收 Collector采集回来的数据,存入Mongodb中,同时接收UI的请求,从数据库中获取数据返回到UI展示。审计API是服务于审计CI/CD数据的API终端集合。
DevOps工具 Jira, Git, Sonar等工具。
收集者层 通过RESTAPI的方式与众多的工具链进行联系;Collector均采用了java进行开发,通过简单的设定即可启动,当然前提是收集对象也应该是启动的状态。
数据库层 作为底层的存储层,存放Collector采集的数据。
表 3
2) 执行者仪表盘
架构如下图 2所示,具体每层功能如表 2所示
图 22
组件 描述
数据库层 读写数据库
收集者层 包含文件和指标收集器,每一个收集者都从读数据库获取数据,生成指标,并将这些指标写入写数据库。
API层 提供了在UI上显示指标的接口。
UI层 用户从该层看到仪表盘。不能配置仪表盘信息。
表 4
2. 编码方式
使用的语言有java、JavaScript与html,开源,源代码网址:https://github.com/capitalone/Hygieia
(四) 环境配置
前提是已经有,java 、maven、node、mongoDB的环境了,这些环境的搭建不在本篇范围内
图 24
图 25
图 26
图 27
(五) 开发所需人力与资源
(以下人日按照每天工作8小时估算)