狠狠撸

狠狠撸Share a Scribd company logo
开源力量公开课主题分享
Open stack在公司持续集成中的实战
? 持续集成回顾
? 持续集成系统实施面临难题
? 云计算对持续集成带来的好处
? OpenStack介绍
? 公司案例分享
? 几点建议
持续集成是一种软件开发实践,即团
队开发成员经常集成他们的工作,通
常每个成员每天至少集成一次,也就
意味着每天可能会发生多次集成。每
次集成都通过自动化的构建(包括编
译,发布,自动化测试)来验证,从而
尽快地发现集成错误。许多团队发现
这个过程可以大大减少集成的问题,
让团队能够更快的开发内聚的软件。
http://martinfowler.com/articles/continuousIntegration.html
? 统一的代码库
? 自动构建
? 自动测试
? 每个人每天都要向代码库主干提交代码
? 每次代码递交后都会在持续集成服务器上触发一次构建
? 保证快速构建
? 模拟生产环境的自动测试
? 每个人都可以很容易的获取最新可执行的应用程序
? 每个人都清楚正在发生的状况
? 自动化的部署
? 所有的变更必须本地构建成功才提交
? 开发人员每天至少向版本控制库中提交一次代码
? 开发人员每天至少需要从版本控制库中更新一次代
码到本地机器
? 需要有专门的集成服务器来执行集成构建,每天要执
行多次构建
? 每次构建都要100%通过
? 每次构建都可以生成可发布的产物
? 修复失败的构建是优先级最高的事情
检出代码 编译 单元测试
质量检查
构建安装包 发布 部署组件测试环境
组件验收测试
部署系统测试环境
系统验收测试
CI 报表
开发人员提交变更
发布
? 我们要改变工作方式,敏捷还是敏捷!
? 建设持续集成系统
? 代码复查
? 静态、动态代码检查
? 构建
? 包仓库管理
? 配置管理
? 自动部署
? 自动化测试
? 报表与提醒
? 构建、部署很慢
? 资源申请周期长
? 难扩容
? 失败后修复时间长
? 开发和CI环境有差异
? …
? 统一的基础设施(IaaS)
? 快速资源申请
? 强大的弹性运算能力
? 基础设施版本管理(Infrastructure as a Code)
? 提供资源管理API
? …
? 网络速度
? 安全性
? 控制力
? 技术积累
? 传统软件兼容性
? 隔离基本的要求
? 构建、部署类型
Open stack在公司持续集成中的实战
Havana
Open stack在公司持续集成中的实战
? 实例生命周期管理
? 提供基于REST API
? Hypervisor 屏蔽,支持KVM,Xen,Hyper-v,Docker e.g.
? 支持大规模水平伸缩
? 虚拟网络管理
? 面向租户的网络管理(SDN)
? 高度可配置的plug-in架构
? 基于 REST 的API
? 认证与授权
? 用户,租户和角色管理
? 服务目录管理
? 支持多认证机制(MySQL, Ldap, AD e.g)
? 镜像注册、查询
? 基于角色的访问控制
? 支持多格式的镜像(raw,qcow2 e.g.)
? 支持多种后端存储(S3, Swift,File system e.g.)
? 用户自助管理界面
? 提供类似EBS 的块存储
? 减少Nova的复杂性,降低Nova的负载
? 支持多种后端存储
? 可靠对象存储
? 没有容量限制
? 无单点故障
? 支持 S3 API
? 模板定义环境
? 云资源拓扑与编排服务
? 兼容AWS CloudFormation
? 资源监控与度量
Open stack在公司持续集成中的实战
? 工程师>100
? 传统电信项目,包括Oracle,JBoss
? 开发语言覆盖C, C++, Python, Java
? 组件比较多,支持产物SA/HA 部署
? 组件相互依赖
? 测试用例>1000
? 构建时间长
? 构建老是失败
? 部署场景复杂,失控
? 开发环境和CI环境不一致
? 失败原因排除难,问题不易重现
? 老板说,CI太费钱
? …
? 获取构建结果不要等太久
? 资源获取能自动、快速、弹性
? 环境能版本控制
? 环境能回滚
? .. Docker
KVM
Puppet
OpenStack
源码版本
管理仓库
7.冒烟测试
10.组件测试
13.系统测试
16.手工测试
4.构建
制品管理仓库
15.性能测试
1.提交
2.复查
3.检出
5.预发布
6.部署
9.部署
12.部署
15.部署
18.部署
8.晋升
11.晋升
14.晋升
17.晋升
19.发布
收集测试覆盖率
收集流水线状态 拉取测试用例列表
代码质量面板
CI 仪表盘
测试用例库
开发人员
评审委员会
配置仓库
iSCSI / SAN
OpenStack HA部署
自动化部署环境
Object Storage
消息集群
AMQP
用户界面和管理平台(Dashboard)
负
载
均
衡
NTP
计算节点
Nova
Compute
AMQP
KeyStone集群
KeyStone KeyStone
Swift & Proxy01
模版库
Glance
弹性卷存储
Cinder
DB集群
MySQL
网络节点
Neutron
Network
Monitor
Swift & Proxy05
…
API
计算节点
Nova
Compute
Monitor
API
计算节点
Nova
Compute
Monitor
API
Glance
MySQL
Cinder
Volume
PXE/TFTP/DHCP
监控节点
Monitor
Server
网络节点
Neutron
Network
控制节点
Nova
controller
控制节点
Nova
controller
独立的OpenStack 集群
CI 引擎
? 容量瓶颈
? 规避风险
? 测试开发
? 构建尽可能的快速<10分钟
? 多任务并行执行,无需排队
? 弹性创建构建蝉别谤惫别谤
? 与OpenStack无缝集成
? 启动足够快
? 执行效率高
? Runtime隔离
? Jenkins Slave管理
? 使用Jenkins plugin :jclouds-jenkins
? 构建开始生产VM,结束删除
https://wiki.jenkins-ci.org/display/JENKINS/JClouds+Plugin
? API方式资源管理,尽可能自动化,可版本控制
? 调用Nova CLI
? Python-novaclient
? 弹性、分时利用资源
? 白天开发人员使用,晚上CI使用
? 测试虚拟机定期删除
? 镜像分级策略,提高部署效率
? OS 做进Base Image
? 3PP 定期更新
? APP 实时安装
OS
3PP
KVM
APP
3PP
裸机ISO
VM
VM
VM
RPM
Repo.
Base
image
VM
VM
3PP
image
每次部署自动做
3PP变更时自动做
手工做一次
上传
快照
? 部署高度自动化,一键部署
? 部署框架
? Python fabric 库
? 系统无侵入性
部署模板
获取资源
安装包准备
安装组件
应用配置
启动服务
服务检查
? 测试分组、并行执行,缩短时间
? 容易弹性
? 测试系统水平扩展
Target Node
Test Agent
Simulator Node
Testing Cluster 4
Target Node
Test Agent
Simulator Node
Testing Cluster 3
Target Node
Test Agent
Simulator Node
Testing Cluster 2
Target Node
Test Agent
Simulator Node
Testing Cluster 1
1.分发测试用例
3.收集测试用例
2.多机器并行测试
? 现场保留,方便问题排查
? VM自动挂起
? OpenStack 编排服务 (Heat)
? 部署脚本解耦合
? 不用负责资源申请
? 基于模板
? 逻辑更简单
? 云化步骤:先易后难,先构建再测试
? 收益:构建 >单元测试>功能测试 >系统测试 >性能测试
? 成本:性能测试>系统测试>功能测试>单元测试>构建
? 指导思想:CI其实是面向开发的运维
? OpenStack HA
? 多OpenStack集群环境
? 不只是技术,观念转变更重要
? 弹性
? 自动化
? 敏捷
? …
Open stack在公司持续集成中的实战
? Email:yongluo2013@gmail.com
? Blog : http://yongluo.blog.com
? WeiBo :@warrior_罗勇
? WeiXin:@嗨皮

More Related Content

Open stack在公司持续集成中的实战