51
百度实施持续集成之 工具战争 路宁 www.luning.name [email protected] 11年4月6日星期三

百度实施持续集成之 “工具战争”-Qcon2011

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 百度实施持续集成之 “工具战争”-Qcon2011

百度实施持续集成之“工具战争”

路宁www.luning.name

[email protected]

11年4月6日星期三

Page 2: 百度实施持续集成之 “工具战争”-Qcon2011

•百度项目管理部工程师

•曾任ThoughtWorks咨询师

•热衷于敏捷和精益

关于我

11年4月6日星期三

Page 3: 百度实施持续集成之 “工具战争”-Qcon2011

一点背景

11年4月6日星期三

Page 4: 百度实施持续集成之 “工具战争”-Qcon2011

• C++的产品线,共100+人

•项目小,且多

•每个项目为涉及的模块分别拉分支

•选择模块试点CI, 涉及多个项目,20+人

11年4月6日星期三

Page 5: 百度实施持续集成之 “工具战争”-Qcon2011

R1

R2

P1

P2

P3

R3

11年4月6日星期三

Page 6: 百度实施持续集成之 “工具战争”-Qcon2011

P1

P2

P3

P4

R1 R2

11年4月6日星期三

Page 7: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 8: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 9: 百度实施持续集成之 “工具战争”-Qcon2011

开始征程

11年4月6日星期三

Page 10: 百度实施持续集成之 “工具战争”-Qcon2011

持续集成平台

编译平台

项目管理平台

测试平台

上线部署平台

11年4月6日星期三

Page 11: 百度实施持续集成之 “工具战争”-Qcon2011

?

持续集成平台上的构建无法在本地运行

11年4月6日星期三

Page 12: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 13: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 14: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 15: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 16: 百度实施持续集成之 “工具战争”-Qcon2011

DB

M 1 M 2 M 3M 1

M 2

M 3

11年4月6日星期三

Page 17: 百度实施持续集成之 “工具战争”-Qcon2011

DB

ant-1.8.2.jar

11年4月6日星期三

Page 18: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 19: 百度实施持续集成之 “工具战争”-Qcon2011

多个项目的Dev在Trunk上做本地编译遇到困难

?

11年4月6日星期三

Page 20: 百度实施持续集成之 “工具战争”-Qcon2011

在项目管理平台中建项目,拉分支,在编译平台上设置包编译依赖后才能做本地编译

11年4月6日星期三

Page 21: 百度实施持续集成之 “工具战争”-Qcon2011

•编译平台集中管理包编译依赖配置

•包编译依赖基于项目(而非软件模块)配置

编译平台的特点

11年4月6日星期三

Page 22: 百度实施持续集成之 “工具战争”-Qcon2011

•对包编译依赖配置缺乏有效的版本管理

•做本地做编译有重重约束

•针对“项目”设置依赖配置让问题变复杂

问题

11年4月6日星期三

Page 23: 百度实施持续集成之 “工具战争”-Qcon2011

Repository

junit-3.8.1.jar

11年4月6日星期三

Page 24: 百度实施持续集成之 “工具战争”-Qcon2011

用comake编译, 替代集中的编译平台,并在本地管理编译依赖配置

11年4月6日星期三

Page 25: 百度实施持续集成之 “工具战争”-Qcon2011

项目“降级”为功能点,用wiki记录,不用在项目管理平台上创建“繁

重”的项目

11年4月6日星期三

Page 26: 百度实施持续集成之 “工具战争”-Qcon2011

无法在本地任意运行所有测试

?

11年4月6日星期三

Page 27: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 28: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 29: 百度实施持续集成之 “工具战争”-Qcon2011

•要通过平台操作,还不能实现无需人工干预的自动化

•测试Case及数据通过基于Web的平台集中管理和存储,与生产代码脱节

问题

11年4月6日星期三

Page 30: 百度实施持续集成之 “工具战争”-Qcon2011

•开发和使用新测试平台,通过python脚本写测试,能完全自动运行

•测试平台源码、测试代码及数据与生产代码做同源版本管理

•测试环境标准化,每个人都可方便地在本地运行所以测试

方案

11年4月6日星期三

Page 31: 百度实施持续集成之 “工具战争”-Qcon2011

上线过程繁琐,依赖操作单,怎么自动化?

?

11年4月6日星期三

Page 32: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 33: 百度实施持续集成之 “工具战争”-Qcon2011

11年4月6日星期三

Page 34: 百度实施持续集成之 “工具战争”-Qcon2011

•线上配置及数据重复存放,且缺乏版本管理

• Dev的准备工作和OP的人工动作较多

问题

11年4月6日星期三

Page 35: 百度实施持续集成之 “工具战争”-Qcon2011

•配置,数据及部署脚本与源码做同源版本管理

•上线步骤全部脚本化,通过一条命令运行

•线上配置的修改与代码一样,需要自动化测试保证质量

•与Hudson集成,实现一键上线

方案

11年4月6日星期三

Page 36: 百度实施持续集成之 “工具战争”-Qcon2011

工具演进的规律

11年4月6日星期三

Page 37: 百度实施持续集成之 “工具战争”-Qcon2011

通过人工流程建立秩序

11年4月6日星期三

Page 38: 百度实施持续集成之 “工具战争”-Qcon2011

利用办公自动化式的平台

11年4月6日星期三

Page 39: 百度实施持续集成之 “工具战争”-Qcon2011

自动持续执行

11年4月6日星期三

Page 40: 百度实施持续集成之 “工具战争”-Qcon2011

DevOps

•用统一平台管理流程和数据

•通过界面进行可视化操作

•局部操作的自动化

•打破部门局限,各角色密切合作下的创新方案

•用靠谱的工具

•对一切做配置管理和自动化

办公自动化

行业现状

11年4月6日星期三

Page 41: 百度实施持续集成之 “工具战争”-Qcon2011

DevOps

•用统一平台管理流程和数据

•通过界面进行可视化操作

•局部操作的自动化

•打破部门局限,各角色密切合作下的创新方案

•用靠谱的工具

•对一切做配置管理和自动化

办公自动化

行业现状

11年4月6日星期三

Page 42: 百度实施持续集成之 “工具战争”-Qcon2011

测试平台的演进也类似

11年4月6日星期三

Page 43: 百度实施持续集成之 “工具战争”-Qcon2011

个人维护和运行测试

11年4月6日星期三

Page 44: 百度实施持续集成之 “工具战争”-Qcon2011

DB

平台统一管理和运行测试

11年4月6日星期三

Page 45: 百度实施持续集成之 “工具战争”-Qcon2011

同源版本管理,通过脚本运行

11年4月6日星期三

Page 46: 百度实施持续集成之 “工具战争”-Qcon2011

反思

11年4月6日星期三

Page 47: 百度实施持续集成之 “工具战争”-Qcon2011

一定要换工具吗?

11年4月6日星期三

Page 48: 百度实施持续集成之 “工具战争”-Qcon2011

大而全的平台可视化编辑

自主研发,方便以后定制包装一下,再起个响亮的名字

支持拖拽

11年4月6日星期三

Page 49: 百度实施持续集成之 “工具战争”-Qcon2011

文本和命令行 优于

只做好一件事的开放工具 优于

融入社区, 善用开源 优于

整体思考解决问题 优于

二进制和GUI

大而全的集中平台

二次包装和自主开发

依赖工具解决问题

11年4月6日星期三

Page 50: 百度实施持续集成之 “工具战争”-Qcon2011

开拓视野,融入社区

11年4月6日星期三