SlideShare a Scribd company logo
1 of 51
Download to read offline
百度实施持续集成之
             “工具战争”                 路宁
                          www.luning.name
                      luning.tw@gmail.com




11年4月6日星期三
关于我
        • 百度项目管理部工程师

        • 曾任ThoughtWorks咨询师

        • 热衷于敏捷和精益




11年4月6日星期三
一点背景




11年4月6日星期三
• C++的产品线,共100+人

             • 项目小,且多

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

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




11年4月6日星期三
P1
                                      R1
                  P2
                                 R2

                       P3
                            R3




11年4月6日星期三
P1   P3

             P2   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日星期三
M1      M2   M3
                       M1



                       M2

             DB

                       M3




11年4月6日星期三
ant-1.8.2.jar




             DB




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日星期三

More Related Content

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

Node js q-con
Node js q-conNode js q-con
Node js q-conq3boy
 
Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现Davies Liu
 
使用Hudson打造屬於你自己的軟體建構機器人
使用Hudson打造屬於你自己的軟體建構機器人使用Hudson打造屬於你自己的軟體建構機器人
使用Hudson打造屬於你自己的軟體建構機器人javatwo2011
 
Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍myzykj
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
Qcon beijing-2013-04-27-tianyongqiang
Qcon beijing-2013-04-27-tianyongqiangQcon beijing-2013-04-27-tianyongqiang
Qcon beijing-2013-04-27-tianyongqiangdrewz lin
 
Welcome to Apache OpenOffice 3.4 COSCUP 2012
Welcome to Apache OpenOffice 3.4 COSCUP 2012Welcome to Apache OpenOffice 3.4 COSCUP 2012
Welcome to Apache OpenOffice 3.4 COSCUP 2012imacat .
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7twMVC
 
GDG Taichung - Firebase Introduction 01
GDG Taichung - Firebase Introduction 01GDG Taichung - Firebase Introduction 01
GDG Taichung - Firebase Introduction 01Duran Hsieh
 
版控實務
版控實務版控實務
版控實務Robin
 
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AIKo Ko
 
HTML5游戏之路
HTML5游戏之路HTML5游戏之路
HTML5游戏之路lentichan
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用iammutex
 
後拆素材介紹、Pdf轉製說明 1.0
後拆素材介紹、Pdf轉製說明 1.0後拆素材介紹、Pdf轉製說明 1.0
後拆素材介紹、Pdf轉製說明 1.0城邦文化
 
Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署Deng Peng
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 StartupSteve Luo
 
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化移动的前端技术架构和性能优化
移动的前端技术架构和性能优化fangdeng
 
Node Party HongKong
Node Party HongKongNode Party HongKong
Node Party HongKongKennyZ
 
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)My own sweet home!
 

Similar to 百度实施持续集成之 “工具战争”-Qcon2011 (20)

Node js q-con
Node js q-conNode js q-con
Node js q-con
 
Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现Qcon 2011:Beansdb 的设计与实现
Qcon 2011:Beansdb 的设计与实现
 
使用Hudson打造屬於你自己的軟體建構機器人
使用Hudson打造屬於你自己的軟體建構機器人使用Hudson打造屬於你自己的軟體建構機器人
使用Hudson打造屬於你自己的軟體建構機器人
 
Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
Qcon beijing-2013-04-27-tianyongqiang
Qcon beijing-2013-04-27-tianyongqiangQcon beijing-2013-04-27-tianyongqiang
Qcon beijing-2013-04-27-tianyongqiang
 
企業級開源文書處理套件(20160804)
企業級開源文書處理套件(20160804)企業級開源文書處理套件(20160804)
企業級開源文書處理套件(20160804)
 
Welcome to Apache OpenOffice 3.4 COSCUP 2012
Welcome to Apache OpenOffice 3.4 COSCUP 2012Welcome to Apache OpenOffice 3.4 COSCUP 2012
Welcome to Apache OpenOffice 3.4 COSCUP 2012
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
 
GDG Taichung - Firebase Introduction 01
GDG Taichung - Firebase Introduction 01GDG Taichung - Firebase Introduction 01
GDG Taichung - Firebase Introduction 01
 
版控實務
版控實務版控實務
版控實務
 
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AI
 
HTML5游戏之路
HTML5游戏之路HTML5游戏之路
HTML5游戏之路
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
 
後拆素材介紹、Pdf轉製說明 1.0
後拆素材介紹、Pdf轉製說明 1.0後拆素材介紹、Pdf轉製說明 1.0
後拆素材介紹、Pdf轉製說明 1.0
 
Ruby on rails部署
Ruby on rails部署Ruby on rails部署
Ruby on rails部署
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 Startup
 
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化移动的前端技术架构和性能优化
移动的前端技术架构和性能优化
 
Node Party HongKong
Node Party HongKongNode Party HongKong
Node Party HongKong
 
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
 

More from Yiwei Ma

Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconYiwei Ma
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconYiwei Ma
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconYiwei Ma
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconYiwei Ma
 
Zhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qconZhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qconYiwei Ma
 
Taobao practice-liyu-qcon
Taobao practice-liyu-qconTaobao practice-liyu-qcon
Taobao practice-liyu-qconYiwei Ma
 
Thoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qconThoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qconYiwei Ma
 
Ufida design-chijianqiang-qcon
Ufida design-chijianqiang-qconUfida design-chijianqiang-qcon
Ufida design-chijianqiang-qconYiwei Ma
 
Spring design-juergen-qcon
Spring design-juergen-qconSpring design-juergen-qcon
Spring design-juergen-qconYiwei Ma
 
Netflix web-adrian-qcon
Netflix web-adrian-qconNetflix web-adrian-qcon
Netflix web-adrian-qconYiwei Ma
 
Google arch-fangkun-qcon
Google arch-fangkun-qconGoogle arch-fangkun-qcon
Google arch-fangkun-qconYiwei Ma
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconYiwei Ma
 
Alibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qconAlibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qconYiwei Ma
 
Twitter keynote-evan-qcon
Twitter keynote-evan-qconTwitter keynote-evan-qcon
Twitter keynote-evan-qconYiwei Ma
 
Netflix keynote-adrian-qcon
Netflix keynote-adrian-qconNetflix keynote-adrian-qcon
Netflix keynote-adrian-qconYiwei Ma
 
Facebook keynote-nicolas-qcon
Facebook keynote-nicolas-qconFacebook keynote-nicolas-qcon
Facebook keynote-nicolas-qconYiwei Ma
 
Domainlang keynote-eric-qcon
Domainlang keynote-eric-qconDomainlang keynote-eric-qcon
Domainlang keynote-eric-qconYiwei Ma
 
Devjam keynote-david-qcon
Devjam keynote-david-qconDevjam keynote-david-qcon
Devjam keynote-david-qconYiwei Ma
 
Baidu keynote-wubo-qcon
Baidu keynote-wubo-qconBaidu keynote-wubo-qcon
Baidu keynote-wubo-qconYiwei Ma
 
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011Yiwei Ma
 

More from Yiwei Ma (20)

Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
 
Zhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qconZhongxing practice-suchunshan-qcon
Zhongxing practice-suchunshan-qcon
 
Taobao practice-liyu-qcon
Taobao practice-liyu-qconTaobao practice-liyu-qcon
Taobao practice-liyu-qcon
 
Thoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qconThoughtworks practice-hukai-qcon
Thoughtworks practice-hukai-qcon
 
Ufida design-chijianqiang-qcon
Ufida design-chijianqiang-qconUfida design-chijianqiang-qcon
Ufida design-chijianqiang-qcon
 
Spring design-juergen-qcon
Spring design-juergen-qconSpring design-juergen-qcon
Spring design-juergen-qcon
 
Netflix web-adrian-qcon
Netflix web-adrian-qconNetflix web-adrian-qcon
Netflix web-adrian-qcon
 
Google arch-fangkun-qcon
Google arch-fangkun-qconGoogle arch-fangkun-qcon
Google arch-fangkun-qcon
 
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qconCibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
 
Alibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qconAlibaba arch-jiangtao-qcon
Alibaba arch-jiangtao-qcon
 
Twitter keynote-evan-qcon
Twitter keynote-evan-qconTwitter keynote-evan-qcon
Twitter keynote-evan-qcon
 
Netflix keynote-adrian-qcon
Netflix keynote-adrian-qconNetflix keynote-adrian-qcon
Netflix keynote-adrian-qcon
 
Facebook keynote-nicolas-qcon
Facebook keynote-nicolas-qconFacebook keynote-nicolas-qcon
Facebook keynote-nicolas-qcon
 
Domainlang keynote-eric-qcon
Domainlang keynote-eric-qconDomainlang keynote-eric-qcon
Domainlang keynote-eric-qcon
 
Devjam keynote-david-qcon
Devjam keynote-david-qconDevjam keynote-david-qcon
Devjam keynote-david-qcon
 
Baidu keynote-wubo-qcon
Baidu keynote-wubo-qconBaidu keynote-wubo-qcon
Baidu keynote-wubo-qcon
 
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011淘宝线上线下性能跟踪体系和容量规划-Qcon2011
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
 

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