让持续交付流水线灵动起来
一、百度构建发展史
1.1 什么是构建
1.2 百度构建发展史
1.3 新的问题
新产品形速度态、新技术应用、复杂架构,对构建有新的要求 迭代要求越来越高,对构建效率要求同步提高 不同的业务类型、不同技术栈对构建要求不尽相同
构建量增加,构建稳定性、构建成功率下降 构建链路变长,各类异常的人工成本 资源紧缺状态下提高构建效率 工具平台散乱,同质平台过多,无法统一管理优化 工具平台散乱带来版本不一致、管理混乱,稳定性也受到影响
二、百度双引擎生态方案
2.1 工程能力标准
2.2 标准构建引擎—插件中心
2.2.1 快速获取标准插件能力
2.2.2 获取稳定优质的插件
2.3 非标准构建引擎—CI容器化
时间短:54%的任务执行小于30秒,这就要求: 任务执行稳定性必须很高 不能有长时间的任务排队 稳定性低:整体稳定性不足95% 1)slave机器上的软件环境手工运维,标准缺失,环境问题导致任务 失败率高达5% 2)宿主机上直接执行任务,任务间会相互影响 资源利用率低:长尾流量大部分是绑定slave进行,这样会造成极大浪费。
即申请即释放的docker容器执行任务,主要优点有: 速度快:docker容器构建速度快,2~3秒就可以创建出新容器; 稳定性好:容器隔离性好,软件环境通过镜像构建完成,标准统一; 排队少:资源整体配置管理,动态获取容器,用完即释放; 稳定性专项优化:主要的工作有,容器缓存系统构建、灾备系统、跨地域 多机房资源池调度等; 效率专项优化:主要的工作有,容器缓存系统构建、镜像预分发、任务高 并发执行等;
三、智能构建
3.1 智能构建的产生
在业务线能过构建双引擎生态快速搭建自己的流水线后,随着业务的快速迭代,对构建效能提出了更高的要求,传统的流水线存在:
1.执行流程固定,存在一些无效执行,如在执行中不能根据执行的历史信息进行执行决策,导致冗余执行,不能站在风险的角度进行选择性的构建也导致了冗余;
2.执行资源的浪费,如在执行过程中同类型的任务反复执行,不考虑业务优先级进行动态调度执行,导致有限资源未被高效利用;
3.构建中人力的浪费,如构建过程中任务失败,阻塞执行时,需要人工介入进行分析定位排查,导致人力的消耗等。
3.2 按需动态执行的智能构建
3.3 长尾构建后闭环
3.4 智能构建业务交互逻辑
四、总结
评论