背景
随着信也科技业务的不断发展,公司的应用越来越多,产品的迭代也越来越频繁。过去,一个团队的开发人员可能会孤立地工作很长一段时间,只有在他们的工作完成后,才会将他们的更改合并到主分支中。这使得合并代码变更变得困难而耗时,而且还会导致错误积累很长时间而得不到纠正。这些因素导致更加难以迅速向客户交付更新。传统的集成和交付方式暴露了缺点,主要总结如下:
- Bug总是在最后才发现,越到项目后期,问题越难解决
- 代码合并难、合并冲突多,代码合并花费时间长。上线时经常发生分支代码漏合,错合
- 代码变更不能得到及时反馈,项目透明度差
- 集成时发现系统无法运行,或者同样的程序本地环境能运行,上线无法运行
- 自动化程度低,重复进行手工的部署、调试、测试、发布,成本高,风险大
- 代码质量无法管控(包括应用本身的代码质量,以及依赖包或者第三方支持)
- 无法立即得到一个可部署上线的软件包,没有安装包管理,代码到安装包没有可溯源的途径
- 无效等待多,开发在等集成其他人模块,测试人员在等开发修复Bug,产品在等新版本上线。等待意味着低效
平台定位
为了解决上述痛点,阿拉丁平台致力于提供持续集成流水线,敏捷化的持续测试工具,帮助规范应用开发,有效地提高软件测试的效率和质量,实现快速迭代。主要提供一下能力:
- 持续集成流水线 — 一键式的构建打包
- GitLab Hooks — 代码变更自动触发代码检查、测试、构建打包
- 分支管理 — 分支管理规范落地,分支自动合并,分支合并检查
- 代码质量管理 — 代码质量展示,实时反馈以及代码质量卡点
- 依赖包管理 — 依赖包查询,依赖包卡点
- 测试环境部署 — 一键式测试环境虚拟机部署
- 企微通知 — 平台全流程企微实时通知,及时给用户反馈
架构设计
技术架构

从总体技术架构上主要分为3个方面:
- 基础组件:主要指数据存储服务,包括数据库和高速缓存。
- 基础服务:通过集成、二次开发一系列的基础组件来支撑完成阿拉丁平台的功能。
- 应用框架:主要指基于 Spring Cloud 的微服务框架,开发的包括构建流程、部署流程、代码质量管理、分支管理以及依赖包管理五大功能模块
业务架构

如上图所示,业务架构总体上分为7大功能:
- 分支管理:分支管理落地了公司的分支管理规范,对分支的全生命周期进行了管理。分支上线时对分支代码进行检查,检查分支是否正确合并,保证上线的分支代码没有漏合,错合
- 代码编写:代码编写过程中,代码PUSH到仓库,会进行代码增量检查,检查是否符合编码规范。代码成功PUSH到仓库,webhook会自动触发构建,对代码进行测试、编译、打包,并且会通过企业微信把报告及时反馈给开发
- 构建:一键自动进行构建打包,每次构建都是全新的环境,不使用历史的缓存和依赖,这样保证了包在不同环境的可移植性。构建生成的构建产物,根据产物类型上传到不同的包管理中心,每一次构建的构建ID、代码Commit ID、构建产物地址都有一一对应的关系,方便以后追溯。
- 单元测试:运行单元测试,生成单元测试覆盖率报告,并且进行覆盖率卡点拦截
- 代码质量检查:代码质量检查包括PMD、FINDBUGS、CHECKSTYLES检查,阿拉丁有详细的质量报告,企微及时反馈开发质量报告,并且进行代码质量卡点拦截
- 依赖包检查:对java应用依赖包进行分析检查,生成依赖包报告,并且可对依赖包进行卡点拦截
- 部署:一键部署,并对部署的应用进行启动校验
总结
阿拉丁平台是信也科技自主研发一站式的持续集成解决方案。实现了分支管理规范、编码规范以及代码上线流程规范的落地。提高了迭代效率,降低了风险,提高了代码质量。持续集成使得团队成员清楚地知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,影响的结果怎么样,提高了项目的透明度,增强了团队开发产品的信心。
本文来自拍码场,经授权后发布,本文观点不代表信也智慧金融研究院立场,转载请联系原作者。