Download - 百度实施持续集成之 “工具战争”-Qcon2011
![Page 1: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/1.jpg)
百度实施持续集成之“工具战争”
路宁www.luning.name
11年4月6日星期三
![Page 2: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/2.jpg)
•百度项目管理部工程师
•曾任ThoughtWorks咨询师
•热衷于敏捷和精益
关于我
11年4月6日星期三
![Page 3: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/3.jpg)
一点背景
11年4月6日星期三
![Page 4: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/4.jpg)
• C++的产品线,共100+人
•项目小,且多
•每个项目为涉及的模块分别拉分支
•选择模块试点CI, 涉及多个项目,20+人
11年4月6日星期三
![Page 5: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/5.jpg)
R1
R2
P1
P2
P3
R3
11年4月6日星期三
![Page 6: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/6.jpg)
P1
P2
P3
P4
R1 R2
11年4月6日星期三
![Page 7: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/7.jpg)
11年4月6日星期三
![Page 8: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/8.jpg)
11年4月6日星期三
![Page 9: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/9.jpg)
开始征程
11年4月6日星期三
![Page 10: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/10.jpg)
持续集成平台
编译平台
项目管理平台
测试平台
上线部署平台
11年4月6日星期三
![Page 11: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/11.jpg)
?
持续集成平台上的构建无法在本地运行
11年4月6日星期三
![Page 12: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/12.jpg)
11年4月6日星期三
![Page 13: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/13.jpg)
11年4月6日星期三
![Page 14: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/14.jpg)
11年4月6日星期三
![Page 15: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/15.jpg)
11年4月6日星期三
![Page 16: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/16.jpg)
DB
M 1 M 2 M 3M 1
M 2
M 3
11年4月6日星期三
![Page 17: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/17.jpg)
DB
ant-1.8.2.jar
11年4月6日星期三
![Page 18: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/18.jpg)
11年4月6日星期三
![Page 19: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/19.jpg)
多个项目的Dev在Trunk上做本地编译遇到困难
?
11年4月6日星期三
![Page 20: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/20.jpg)
在项目管理平台中建项目,拉分支,在编译平台上设置包编译依赖后才能做本地编译
11年4月6日星期三
![Page 21: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/21.jpg)
•编译平台集中管理包编译依赖配置
•包编译依赖基于项目(而非软件模块)配置
编译平台的特点
11年4月6日星期三
![Page 22: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/22.jpg)
•对包编译依赖配置缺乏有效的版本管理
•做本地做编译有重重约束
•针对“项目”设置依赖配置让问题变复杂
问题
11年4月6日星期三
![Page 23: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/23.jpg)
Repository
junit-3.8.1.jar
11年4月6日星期三
![Page 24: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/24.jpg)
用comake编译, 替代集中的编译平台,并在本地管理编译依赖配置
11年4月6日星期三
![Page 25: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/25.jpg)
项目“降级”为功能点,用wiki记录,不用在项目管理平台上创建“繁
重”的项目
11年4月6日星期三
![Page 26: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/26.jpg)
无法在本地任意运行所有测试
?
11年4月6日星期三
![Page 27: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/27.jpg)
11年4月6日星期三
![Page 28: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/28.jpg)
11年4月6日星期三
![Page 29: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/29.jpg)
•要通过平台操作,还不能实现无需人工干预的自动化
•测试Case及数据通过基于Web的平台集中管理和存储,与生产代码脱节
问题
11年4月6日星期三
![Page 30: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/30.jpg)
•开发和使用新测试平台,通过python脚本写测试,能完全自动运行
•测试平台源码、测试代码及数据与生产代码做同源版本管理
•测试环境标准化,每个人都可方便地在本地运行所以测试
方案
11年4月6日星期三
![Page 31: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/31.jpg)
上线过程繁琐,依赖操作单,怎么自动化?
?
11年4月6日星期三
![Page 32: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/32.jpg)
11年4月6日星期三
![Page 33: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/33.jpg)
11年4月6日星期三
![Page 34: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/34.jpg)
•线上配置及数据重复存放,且缺乏版本管理
• Dev的准备工作和OP的人工动作较多
问题
11年4月6日星期三
![Page 35: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/35.jpg)
•配置,数据及部署脚本与源码做同源版本管理
•上线步骤全部脚本化,通过一条命令运行
•线上配置的修改与代码一样,需要自动化测试保证质量
•与Hudson集成,实现一键上线
方案
11年4月6日星期三
![Page 36: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/36.jpg)
工具演进的规律
11年4月6日星期三
![Page 37: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/37.jpg)
通过人工流程建立秩序
11年4月6日星期三
![Page 38: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/38.jpg)
利用办公自动化式的平台
11年4月6日星期三
![Page 39: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/39.jpg)
自动持续执行
11年4月6日星期三
![Page 40: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/40.jpg)
DevOps
•用统一平台管理流程和数据
•通过界面进行可视化操作
•局部操作的自动化
•打破部门局限,各角色密切合作下的创新方案
•用靠谱的工具
•对一切做配置管理和自动化
办公自动化
行业现状
11年4月6日星期三
![Page 41: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/41.jpg)
DevOps
•用统一平台管理流程和数据
•通过界面进行可视化操作
•局部操作的自动化
•打破部门局限,各角色密切合作下的创新方案
•用靠谱的工具
•对一切做配置管理和自动化
办公自动化
行业现状
11年4月6日星期三
![Page 42: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/42.jpg)
测试平台的演进也类似
11年4月6日星期三
![Page 43: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/43.jpg)
个人维护和运行测试
11年4月6日星期三
![Page 44: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/44.jpg)
DB
平台统一管理和运行测试
11年4月6日星期三
![Page 45: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/45.jpg)
同源版本管理,通过脚本运行
11年4月6日星期三
![Page 46: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/46.jpg)
反思
11年4月6日星期三
![Page 47: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/47.jpg)
一定要换工具吗?
11年4月6日星期三
![Page 48: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/48.jpg)
大而全的平台可视化编辑
自主研发,方便以后定制包装一下,再起个响亮的名字
支持拖拽
11年4月6日星期三
![Page 49: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/49.jpg)
文本和命令行 优于
只做好一件事的开放工具 优于
融入社区, 善用开源 优于
整体思考解决问题 优于
二进制和GUI
大而全的集中平台
二次包装和自主开发
依赖工具解决问题
11年4月6日星期三
![Page 50: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/50.jpg)
开拓视野,融入社区
11年4月6日星期三
![Page 51: 百度实施持续集成之 “工具战争”-Qcon2011](https://reader036.vdocuments.site/reader036/viewer/2022081721/54bed7c44a79593b678b45c6/html5/thumbnails/51.jpg)
www.luning.com
Q&A
11年4月6日星期三