1. 首页
  2. 科技部落

信也科技持续集成解决方案

背景

随着信也科技业务的不断发展,公司的应用越来越多,产品的迭代也越来越频繁。过去,一个团队的开发人员可能会孤立地工作很长一段时间,只有在他们的工作完成后,才会将他们的更改合并到主分支中。这使得合并代码变更变得困难而耗时,而且还会导致错误积累很长时间而得不到纠正。这些因素导致更加难以迅速向客户交付更新。传统的集成和交付方式暴露了缺点,主要总结如下:

  1. Bug总是在最后才发现,越到项目后期,问题越难解决
  2. 代码合并难、合并冲突多,代码合并花费时间长。上线时经常发生分支代码漏合,错合
  3. 代码变更不能得到及时反馈,项目透明度差
  4. 集成时发现系统无法运行,或者同样的程序本地环境能运行,上线无法运行
  5. 自动化程度低,重复进行手工的部署、调试、测试、发布,成本高,风险大
  6. 代码质量无法管控(包括应用本身的代码质量,以及依赖包或者第三方支持)
  7. 无法立即得到一个可部署上线的软件包,没有安装包管理,代码到安装包没有可溯源的途径
  8. 无效等待多,开发在等集成其他人模块,测试人员在等开发修复Bug,产品在等新版本上线。等待意味着低效

平台定位

为了解决上述痛点,阿拉丁平台致力于提供持续集成流水线,敏捷化的持续测试工具,帮助规范应用开发,有效地提高软件测试的效率和质量,实现快速迭代。主要提供一下能力:

  1. 持续集成流水线 — 一键式的构建打包
  2. GitLab Hooks — 代码变更自动触发代码检查、测试、构建打包
  3. 分支管理 — 分支管理规范落地,分支自动合并,分支合并检查
  4. 代码质量管理 — 代码质量展示,实时反馈以及代码质量卡点
  5. 依赖包管理 — 依赖包查询,依赖包卡点
  6. 测试环境部署 — 一键式测试环境虚拟机部署
  7. 企微通知 — 平台全流程企微实时通知,及时给用户反馈

架构设计

技术架构

信也科技持续集成解决方案

从总体技术架构上主要分为3个方面:

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

业务架构

信也科技持续集成解决方案

如上图所示,业务架构总体上分为7大功能:

  • 分支管理:分支管理落地了公司的分支管理规范,对分支的全生命周期进行了管理。分支上线时对分支代码进行检查,检查分支是否正确合并,保证上线的分支代码没有漏合,错合
  • 代码编写:代码编写过程中,代码PUSH到仓库,会进行代码增量检查,检查是否符合编码规范。代码成功PUSH到仓库,webhook会自动触发构建,对代码进行测试、编译、打包,并且会通过企业微信把报告及时反馈给开发
  • 构建:一键自动进行构建打包,每次构建都是全新的环境,不使用历史的缓存和依赖,这样保证了包在不同环境的可移植性。构建生成的构建产物,根据产物类型上传到不同的包管理中心,每一次构建的构建ID、代码Commit ID、构建产物地址都有一一对应的关系,方便以后追溯。
  • 单元测试:运行单元测试,生成单元测试覆盖率报告,并且进行覆盖率卡点拦截
  • 代码质量检查:代码质量检查包括PMD、FINDBUGS、CHECKSTYLES检查,阿拉丁有详细的质量报告,企微及时反馈开发质量报告,并且进行代码质量卡点拦截
  • 依赖包检查:对java应用依赖包进行分析检查,生成依赖包报告,并且可对依赖包进行卡点拦截
  • 部署:一键部署,并对部署的应用进行启动校验

总结

阿拉丁平台是信也科技自主研发一站式的持续集成解决方案。实现了分支管理规范、编码规范以及代码上线流程规范的落地。提高了迭代效率,降低了风险,提高了代码质量。持续集成使得团队成员清楚地知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,影响的结果怎么样,提高了项目的透明度,增强了团队开发产品的信心。

本文来自拍码场,经授权后发布,本文观点不代表信也智慧金融研究院立场,转载请联系原作者。