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

Preview:

DESCRIPTION

 

Citation preview

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

路宁www.luning.name

luning.tw@gmail.com

11年4月6日星期三

•百度项目管理部工程师

•曾任ThoughtWorks咨询师

•热衷于敏捷和精益

关于我

11年4月6日星期三

一点背景

11年4月6日星期三

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

•项目小,且多

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

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

11年4月6日星期三

R1

R2

P1

P2

P3

R3

11年4月6日星期三

P1

P2

P3

P4

R1 R2

11年4月6日星期三

11年4月6日星期三

11年4月6日星期三

开始征程

11年4月6日星期三

持续集成平台

编译平台

项目管理平台

测试平台

上线部署平台

11年4月6日星期三

?

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

11年4月6日星期三

11年4月6日星期三

11年4月6日星期三

11年4月6日星期三

11年4月6日星期三

DB

M 1 M 2 M 3M 1

M 2

M 3

11年4月6日星期三

DB

ant-1.8.2.jar

11年4月6日星期三

11年4月6日星期三

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

?

11年4月6日星期三

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

11年4月6日星期三

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

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

编译平台的特点

11年4月6日星期三

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

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

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

问题

11年4月6日星期三

Repository

junit-3.8.1.jar

11年4月6日星期三

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

11年4月6日星期三

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

重”的项目

11年4月6日星期三

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

?

11年4月6日星期三

11年4月6日星期三

11年4月6日星期三

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

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

问题

11年4月6日星期三

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

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

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

方案

11年4月6日星期三

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

?

11年4月6日星期三

11年4月6日星期三

11年4月6日星期三

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

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

问题

11年4月6日星期三

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

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

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

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

方案

11年4月6日星期三

工具演进的规律

11年4月6日星期三

通过人工流程建立秩序

11年4月6日星期三

利用办公自动化式的平台

11年4月6日星期三

自动持续执行

11年4月6日星期三

DevOps

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

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

•局部操作的自动化

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

•用靠谱的工具

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

办公自动化

行业现状

11年4月6日星期三

DevOps

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

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

•局部操作的自动化

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

•用靠谱的工具

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

办公自动化

行业现状

11年4月6日星期三

测试平台的演进也类似

11年4月6日星期三

个人维护和运行测试

11年4月6日星期三

DB

平台统一管理和运行测试

11年4月6日星期三

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

11年4月6日星期三

反思

11年4月6日星期三

一定要换工具吗?

11年4月6日星期三

大而全的平台可视化编辑

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

支持拖拽

11年4月6日星期三

文本和命令行 优于

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

融入社区, 善用开源 优于

整体思考解决问题 优于

二进制和GUI

大而全的集中平台

二次包装和自主开发

依赖工具解决问题

11年4月6日星期三

开拓视野,融入社区

11年4月6日星期三

路宁luning.tw@gmail.com

www.luning.com

Q&A

11年4月6日星期三

Recommended