这才是DevOps演进及CI/CD实践的正确打开方式!( 四 )


三、从DevOps到一站式研发平台
我们针对以上不足做了以下改造:
1、重构流水线
1)把流水线的任务拆解成一个个独立的原子任务 , 并将原子人按功能划分为校验类和执行类 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
2)根据工程的开发语言 , 发布方式 , 以及推送环境 , 预设了一套流水线任务列表 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
可以看到 , 这里面有两种箭头 , 分别代码同步任务和异步任务:同步任务串行执行 , 若失败会阻断流程;异步任务并行执行 , 若失败 , 不会阻断流程 。
3)自研了JenkinsrabbitMQ插件 , 实现流水线服务与Jenkins之间通过消息队列通信 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
重构之前 , 前面讲到是通过调用JenkinsAPI的方式实现的 , 而重构之后 , 流水线服务组装好构建信息后将消息发布到队列里 , jenkins插件消费消息 , 然后调度slave执行任务 , 同时将状态和结果生成消息也发布到队列中 , 流水线服务消费消息更新日志和状态 , 这种方式极大地提升了成功率 。
4)Jenkinsslave节点容器化
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
重构之前 , 所有的slave节点都是虚拟机 , 这样就导致节点数量固定 , 要么造成资源浪费 , 要么无法满足高并发 , 而且维护成本较高 , 一旦涉及改动 , 需要人工更改每一个节点 。
重构之后 , 我们利用k8s插件 , 链接我们的k8s集群 , 创建slave节点 。 利用k8s特性 , 可动态调整节点数 , 既满足高并发 , 又不造成资源浪费 , 并且维护简单 , 一旦涉及改动 , 只需要重新构建slave镜像应用即可 。
重构之后的流水线有如下特点:流水线执行任务更加灵活 , 可按照实际情况动态调整执行任务 , 实现“因地制宜”;提升了流水线执行任务的成功率 , 实现高可用;通过k8s特性实现Jenkinsslave节点动态扩缩容 , 满足高并发的同时 , 节约服务器资源 。
2、工程全生命周期管理
1)工程创建阶段
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
定义六大工程类型 , 完全覆盖所有研发需求 , 且配置简单 , 一键创建 。
2)工程研发阶段
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
根据工程类型生成配套组件 , 研发阶段全面赋能 。
配套组件有工程权限管理、工程服务管理、工程资源管理、配置中心管理、调度任务管理、域名管理、安全管理等 。
3)工程上线阶段
统一需求发布流程 , cicd流水线标准生产 , 保证每一步的可靠性 。
4)工程运行阶段
实时监控服务 , 多种维度的异常告警机制 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
5)工程下线阶段
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
智能检测中心检测无用工程 , 360度检查工程依赖项 , 一键下线 , 操作简单 。
由此我们实现了工程的全生命周期管理:
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
3、整合基础服务和工具
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
1)提供一站式查询和使用
2)提供各类工具使用文档