小博无线CI系统演进之路

  • 时间:
  • 浏览:0
  • 来源:新大发快三—大发彩票APP

系统化、标准化是降低成本,提升传输速率和质量的重要手段。2014年刚始于搭建CI系统时,build环境、部署环境、部署法律最好的法子和配置法律最好的法子都很零散,难以管理和维护。从2014-2017,先用容器标准化build环境和部署环境,并用pipeline标准化部署法律最好的法子和配置法律最好的法子,有效降低系统冗杂度后,再用云计算资源降低电力供应和数据备份的风险和维护成本,最后用"扁平"与"伸缩"[1]降低云计算成本。

固件编译确实很耗CPU,但这就说 另两个 多耗时只能1小时的短任务,否则为了一天只做几只的build而多开几台包月ecs,会带来巨大的浪费。使用自动伸缩,当jenkins提示mesos资源不足英文时,利用API创建按量ecs加入mesos集群,等build完成后就将它释放掉,是并都不 高性价比的解法。

2014年初,拼了一台16G内存的PC机,在上面开了多个virtual box,另两个 多跑gitlab, 另两个 多跑jenkins master, 剩下的几只就用于搭建build环境,作为jenkins的ssh slave。上线部署通过配置promotion plugin实现 - 先将build出来的release package scp到线上ecs, 再ssh运行另两个 多安装升级脚本。

6月份,办公室停了两次电,有一次竟长达十天 !为了除理停电问提报告 对上线迭代的影响,大伙儿将占据 办公室内的CI系统逐步迁移到了阿里云上。本地的数据备份和恢复是一件非常麻烦的事情,上云后,数据备份就方便多了。

pipeline化后,所有的build动作都通过代码仓库中的Jenkinsfile定义,删剪不时要在jenkins的网页上进行配置,开发通过git push Jenkinsfile就能实现对CI流程的控制。

[1] 在云计算的并都不 基本实践法律最好的法子 - "冗余, 漂移, 伸缩, 熔断, 扁平"中,"扁平"与"伸缩"是并都不 提高资源利用率,降低成本的法律最好的法子,这方面的更多介绍请参考《云计算十字真言及其在小博无线的实践》一文 (https://yq.aliyun.com/articles/62686)

刚刚的docker plugin连接的docker cloud是另两个 多单点ecs, 负责代码的编译,测试,打包,及部署操作,对于线上运行的各种微服务项目,还能应付,但否则用来跑编译路由器固件这名 CPU密集型的任务,就力有未逮了。当事人面,预发布的测试集群否则流量很小,在绝大多数刚刚,各个节点的CPU都不 空闲的。于是自然想到将预发布环境和CI环境进行扁平化:利用mesos plugin在预发布测试环境的mesos集群中集成jenkins framework, 用于运行容器化的jenkins slave。

另外,同年4月份Jenkins官方在新发布的Jenkins 2.0中刚始于全面推进pipeline,随着这次迁移,大伙儿也一起去实施了pipeline结合docker plugin的容器化改造。

小博无线技术团队至2014年创建以来,这三年多以来所使用的CI系统经过数次升级换代,现已删剪上云,全面实现了容器化和pipeline化,并引入了扁平和伸缩的实践来节省云计算成本。本文回顾了CI系统的成长历程。

容器化后,CI的各种build环境也通过Dockerfile得以标准化,否则每次build的容器都不 按需新建的,不不考虑cleanup操作。

另外,将线上服务也容器化,将代码和配置统一装到另两个 多docker image, 刚刚还时要整体升级部署或回退,就消除了"代码和配置都不 变更时,是先回滚配置,还是先回滚代码?"的问提报告 。

2014年底,docker慢慢流行开来,容器比虚拟机要轻量就说 ,否则环境配置还时要用Dockerfile很方便的以代码形式管理起来,大伙儿便将刚刚以virtual box形式占据 的jenkins slave都替加上了docker。