点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文
【摘要】
以敏捷研发模式运作,结合其主要使用Java语言开发,产品架构包括后台服务、前端Web和APP以及多个软件部件的特点,对整个产品计划研发应用中需求管理、特性故事管理、代码托管、持续构建、自动化测试、版本发布、故障管理等都做了合适的规范要求和约定,并很快建立起一套比较完整的DevOps工具链支持。
【关键词】
DevOps,Docker,云CI,制品库,自动化测试,度量
【工具链介绍】
整个产品规划研发应用使用一序列工具链支撑:
1) 原始需求由最贴近市场的用户录入原始需求管理系统系统并由规划组人员收集分析整理形成正式的产品需求。
2) 产品需求录入需求管理系统后由需求分析人员组织需求实例化分析,在线完成需求到特性再到故事任务的分解。
3)需求管理系统中待实现的特性故事任务由开发团队评估并纳入迭代开发计划,开发人员进行开发,经过代码审查、故事特性测试、BA验收后在线变为开发完成状态。
4)代码托管使用Gerrit系统,编译构建使用云CI系统,代码静态检查使用Klockwork云检查系统,版本使用制品库管理,自动化测试接入云测试管理系统。
5)整个产品研发过程使用Wiki进行产品研发应用及各个团队协作信息共享管理,各个阶段信息接入度量系统进行度量分析和信息共享展示。
【实践情况】
DevOps几个重要支撑工具关系图
代码库迁移:
SVN向Gerrit迁移,Gerrit迁移使用后带来一下好处:
1. 除了创建子库和配置子库访问权限组需要由管理员配置操作之外,频度较高的子库访问权限成员增减交给团队自己决定,解决之前SVN权限管理审批流程较长的问题。
2. 单库下载速度提升较多,约10倍的提速率。
3. 代码规模统计与度量系统接口简单,能够快速通过度量系统配置个人代码规模统计和统计结果邮件自动推送至项目组。
4. 公司层面Gerrit代码托管整理效率更高更安全。
1. 开发人员编码完成归档代码之前,本地通过集成到Eclipse开发环境中的Klockwork插件对新增代码进行扫描,发现告警消除后再归档到Gerrit上。项目约定,归档代码到Gerrit库之后发现的Klockwork告警,按开发人员泄漏故障对待。KW本地Java代码扫描告警消除配置参阅《Klocwork Eclipse插件的安装和使用》。
2. 项目部署云KW扫描,每日对项目代码进行静态扫描,发现告警信息推送到项目组。每日KW扫描邮件推送结果。
外部故障跟踪管理:
鉴于产品外部应用面分布交广,外部故障信息收集和跟踪比较困难的情况,借用需求开发管理系统的外部故障管理跟踪功能,用户直接将外部问题录入需求开发管理系统,自动推送邮件到项目研发团队进行跟踪处理,并向外部干系人自动推送问题解决进度。如下图所示:
度量系统应用极大效率提升及时了解研发过程各个环节各个团队度量指标信息,将人力从人肉度量数据统计中解放出来,度量数据展示更灵活,速度更快,且自动实施。
项目有一套完整的DevOps端到端的应用实践,为提升项目研发效率,快速便捷地实现信息共享发挥积极作用。需求管理线借助原始需求管理系统系统、需求开发管理系统支撑需求分析、迭代开发和版本交付的流程。Gerrit、云CI、云KW、制品库、云测试、版本发布管理支撑从代码托管、版本构建、静态检查、版本管理、自动化测试和版本发布管理的各阶段管理。
1. 原始需求管理系统系统与下游需求分析管理系统实现对接。
2. 云KW增量代码扫描结果推送,将引入KW告警关联到个人。
3. 云测试增强对第三方测试工具报告解析格式转换兼容支持,方便获取更多自动化测试细节信息。
4. 度量系统配置项较多时,上下翻滚寻找比较困难,建议增加下一级分类。
5. 度量系统右面趋于弹出对话框与滚动条位置没有关联,建议弹出对话框显示在滚动条当前位置。
6. 度量系统指标项过滤条件过于简单,计算过滤昨天数据不方便实现。
7. 云KW扫描规则需要方便配置和修改。