格家网络自建CI服务实践

1,355 阅读2分钟

保证质量的前提下,产品快速、稳定地迭代升级,这是永恒不变的宗旨,因此公司内部不断地落地DevOps,而持续集成服务是其中极其重要的一环。格家网络内部拥有上百个前端工程,且类型繁多,包括Hybrid、H5、离线、PC中后台、公共组件、各类插件等等,且改动、迭代频繁,部署需求多样复杂,常见CI工具例如Jenkins无法满足需求,因此决定搭建内部CI服务,即发布系统。

一、相关概念

持续集成

持续集成(Continuous integration,简称CI)频繁地将代码集成到主干,详细介绍。优点:

  • 自动化:测试、构建、部署完全自动化
  • 快速发现、定位错误,保证产品质量
  • 防止分支大幅偏离主干
  • 产品快速升级迭代

DevOps

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合,详细介绍。优点:

  • 频繁迭代,减少应用变更范围
  • 加强发布协调
  • 自动化

二、系统功能

部署相关

  • 多环境、多域名、多路径部署
  • 静态资源移至CDN,多缓存策略
  • 版本管理,线上瞬间回滚
  • 灰度发布
  • hash、history双路由模式支持
  • 错误监控、性能检测系统接入
  • 乐高(内部页面搭建系统)定制化需求

性能相关

  • Egg多进程模型
  • 静态资源压缩传输,远程解压
  • 定时清理工程文件

约束相关

  • 发布权限收敛
  • 构建、部署超时检测和失败报警
  • 活动期间等重要时间段封网、发布窗口限制

数据相关

  • 实时日志
  • 系统月报自动生成,提供如平均构建时长、各环境发布总次数、线上发布记录等各指标,月初以邮件发出。

下个版本规划

  • Node应用部署
  • 客户端SDK管理
  • 产品线维度管理

三、流程图

四、结果与意义

系统自上线后经过了几个版本迭代,期间也有许多或大或小的问题,但也未出现过由于系统问题导致线上故障。

CI服务作为技术基础设施之一、DevOps关键节点,帮助团队减少项目风险,提高工作效率和软件产品质量,减小技术债,为产品稳定迭代提供了强大支撑。