光大银行在持续集成平台方面的建设以及应用实践

2018/11/30 18:13

传统的银行科技研发流程在项目管理、质量管理方面已达到一定成熟度,但随着市场竞争越演越烈,新产品、新业务快速上线的要求越来越紧迫,传统软件交付模式的转型迫在眉睫。因此,研究一套新时期研发效率提升的整体方案,并建设相关平台系统促使其落地实施,变得极为重要。

问题与挑战

*业务系统繁多,每天每个系统都会有代码提交,出包时间长;

*每个业务系统的发版步骤不同,复杂度高,耗时长;

*每一次发版会涉及众多环境,重复劳动多;

*欠缺对于基本代码规范的检查;

*手工测试效率低;

*测试数据的制作链条长,复杂度较高;

*每个需求的实际提交物(代码、制品)从开发、测试到交付链路自动化水平较低;

*每日工作产出物的数量和质量的可视化程度较弱。

需要达成的目标

光大银行自2016年开始规划和建设以持续集成、持续交付为主要理论基础,结合科技部门研发测试规范,构建开发、测试、交付一体化的持续集成平台,从传统手工到流水线工厂试运行,实现代码“零”库存。

结合CIContinuous Integration)效能评价模型为改进方向,全面提升研发测试效能,形成一站式的交付平台。该平台最终需要实现的目标是构建自动化流水线,打通研发测试到运维全流程,支持典型交付场景,提供可视化展示和评价模型为组织级提供决策支持。

具体可以分为以下三个阶段目标。

1、实现自动化。

自动化是持续交付的基础,没有自动化就无法达到持续交付。自动化也是效率提升的最快捷手段,最能直接体现价值。需要在配置、代码、测试、交付等多个环节做好自动化才能让持续集成平台发挥作用。

2、实现标准化。

对于大型软件组织,标准化是组织级推进持续集成有效落地的必备手段。只有实现了标准化,平台才具备了较强的通用性,能够在推广应用过程中事半功倍。按照研发团队所处的不同阶段和掌握的能力成熟度级别来推荐适合的交付过程和管理规范。

3、实现定制化。

定制化是对平台的更高要求,不同团队、不同技能水平对工具自然就有不同的需求。由于历史项目众多,涉及的研发模式、理念、技术栈多有不同。在标准化接入使得流程得以基本运转的同时,通过定制化手段、基于插件式的理念在各个环节提供特性封装,能够让平台更加灵活多样,适应性更强,落地实施的效果更佳。

根据上述三个目标,持续集成平台将各研发团队的工具、经验加以重构、融合,打造一站式的平台,使得之前无法分享和复用的资产有机组合,提供灵活化的配管模式、多样化的测试工具、统一化的集成调度,将开发测试交付的整条链路打通,在一个平台内实现基于价值的交付。

具体实施方案

持续集成方案的主导思想是以应用生命周期为视角,以需求为主线,集成各类专业工具,通过自动化流水线方式,固化软件交付规范和工艺,加速软件交付的效率和质量,实现软件交付端到端的全要素管理。基于以上主导思想,平台提供构建流水线、代码托管、自动化测试三大功能,服务于系统的开发测试生命周期中的各个生产活动,为各个环节提供多样化的工具支撑,提升各环节工作效率。平台采用集群式的部署架构,满足大规模的并发构建,提供配置管理、单测集成、自动化测试、发布管理等功能模块,将编译、扫描等操作放在云端执行。

 1.构建流水线。

根据本行现有的研发模式,对于大部分月度需求,都需要进行编译、扫描、部署到测试环境,再进行各种测试。主要实现功能如下:以分支为维度,提供编译—扫描—部署—自动化测试的流水线,可视化展示每一个需求的测试情况,实现代码“0”库存。一个典型的主干开发工作流水线示意如下图所示。

新知图谱, 光大银行在持续集成平台方面的建设以及应用实践



主干开发工作流水线示意图

开发人员根据需求/任务在本地进行开发,当代码提交后,主干工作链路实时获取代码变更消息,触发主干的工作流执行;工作流通过高速分布式的云编译,对多种主流语言(CC++JAVAC#等)实现了自动化编译全覆盖,支持antmavengradle等多种框架。按规范自动生成发布目录,将构建产物按规则存放在成本库/镜像库对应的目录上;随即工作流触发代码扫描功能,在代码层面对接多种代码诊断工具,提前发现漏洞。

我行采用主流开源工具,如findbugscppchecksonar等实现对多种语言的扫描;对于自动化水平较高的项目,在流程中整合插件式的自动化测试工件,满足对于单元测试、接口测试、UI测试等测试的需要;对于计划上线的需求,在投产前进行需求的分拣,代码合并到预投产分支,再利用自动化手段生成预投产包的进入验证测试阶段。

 目前全行已有89个系统接入持续集成平台,实时对代码进行编译扫描部署,有力地支持了持续性工程方面的操作,对及时发现问题,解决问题提供了必要的技术支撑。

2.自动化测试。

持续集成平台支持多种自动化测试种类,提供多样化可扩展的自动化测试服务。用户可以通过统一入口访问共享测试资产和测试服务,在任何时间都可以随时获取云端资源运行,也可以加入CI流水线中自动触发运行。

 本行自研的接口自动化工具功能主要包括后端管理台功能、服务调度、报文适配、通讯适配等功能。以我行最常用的sopXML8583报文和WTChttp协议为主,具备通用性强、扩展性强、脚本解耦的特性,已在多个系统中广泛使用。

3.能力度量指标。

为更好地推广持续集成在项目中的使用,宣贯持续集成理念,使得工具能够和日常工作紧密结合,平台提供一套能力度量指标模型。通过数据可视化清晰地展示日常使用情况,为组织级管理提供有力的指导依据。度量指标主要包括是否每天提交代码;是否每天自动化编译;是否能及时解决编译问题;是否能及时解决“阻断问题”;是否保证总体问题数不增长等。并将指标的完成情况纳入到能力评价模型中,最终得到较为客观的分值。

更多新知

知识库

已收录新知
2 3 9 0 8 9