ScrumGathering2012-大型企業(yè)CI平臺(tái)建設(shè)和實(shí)施分享-騰訊陳小光課件_第1頁(yè)
ScrumGathering2012-大型企業(yè)CI平臺(tái)建設(shè)和實(shí)施分享-騰訊陳小光課件_第2頁(yè)
ScrumGathering2012-大型企業(yè)CI平臺(tái)建設(shè)和實(shí)施分享-騰訊陳小光課件_第3頁(yè)
ScrumGathering2012-大型企業(yè)CI平臺(tái)建設(shè)和實(shí)施分享-騰訊陳小光課件_第4頁(yè)
ScrumGathering2012-大型企業(yè)CI平臺(tái)建設(shè)和實(shí)施分享-騰訊陳小光課件_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

大型企業(yè)CI平臺(tái)建設(shè)和實(shí)施分享騰訊陳小光Agenda現(xiàn)狀&挑戰(zhàn)實(shí)踐分享-平臺(tái)建設(shè)實(shí)踐分享-實(shí)施推廣總結(jié)Q&A7年研發(fā)管理和優(yōu)化經(jīng)驗(yàn),跨越銀行、互聯(lián)網(wǎng)等行業(yè)目前騰訊持續(xù)交付、持續(xù)集成實(shí)踐者愛(ài)好廣泛包括且不限敏捷實(shí)踐,音樂(lè),數(shù)學(xué)微博@v陳小光v

Mail

現(xiàn)狀&挑戰(zhàn)-挑戰(zhàn)-平臺(tái)同時(shí)存在CI平臺(tái)五套,各自為政,平臺(tái)不一,資源浪費(fèi),是否要整合?當(dāng)項(xiàng)目代碼量超過(guò)百萬(wàn)時(shí),如何提升構(gòu)建效率?如何管理復(fù)雜構(gòu)建依賴?CI集群30臺(tái),如何能及時(shí)有效的更新工具和軟件以及配置到相關(guān)環(huán)境里面?如何保證從開發(fā)->測(cè)試->上線三個(gè)步驟的源碼和二進(jìn)制包版本一致性?如果處理來(lái)自不同團(tuán)隊(duì)的對(duì)CI平臺(tái)的需求?現(xiàn)狀&挑戰(zhàn)-挑戰(zhàn)-實(shí)施BU老大們對(duì)CI理解不一,如何獲取他們的支持?開發(fā)對(duì)持續(xù)構(gòu)建的失敗漠不關(guān)心怎么辦?如何讓不到五人的CI團(tuán)隊(duì),高滿意度的支持大于五百人團(tuán)隊(duì)實(shí)施CI?如何提高開發(fā)編寫單元測(cè)試的積極性?底層代碼隨意變更提交,影響到上層代碼怎么辦?解決方案-平臺(tái)-設(shè)計(jì)思想平臺(tái)設(shè)計(jì)思想:統(tǒng)一平臺(tái)和運(yùn)維,減少維護(hù)成本和機(jī)器資源,成果共享環(huán)境保證絕對(duì)權(quán)威,跟線上、測(cè)試、開發(fā)保持一致提升易用性,減少用戶學(xué)習(xí)成本統(tǒng)一測(cè)試和上線的包出口工具盡量使用開源JenkinsSubversionTestlink解決方案-平臺(tái)-高效構(gòu)建系統(tǒng)基于開源scons自研的一套分布式統(tǒng)一構(gòu)建系統(tǒng)支持c++,java,probuf,swig等多種語(yǔ)言代碼變更后可以自動(dòng)分析依賴關(guān)系集構(gòu)建,測(cè)試,靜態(tài)代碼檢查,高亮錯(cuò)誤顯示等功能支持增量和分布式編譯和測(cè)試解決了構(gòu)建效率和依賴管理問(wèn)題其他提升構(gòu)建速度方法:

使用tmpfs,IO效率基本為0,需要大內(nèi)存機(jī)器

使用cache機(jī)制,比如ccache

分布式編譯,比如distcc

源碼分層:抽離基礎(chǔ)庫(kù)代碼專人維護(hù),包括common和thirdparty解決方案-構(gòu)建分級(jí)構(gòu)建類型NightlyBuild:夜間,全量測(cè)試和構(gòu)建,重建cacheCheckInBuild:CheckInSvn,增量ut,增量構(gòu)建,基于cacheHandleBuild:按需,全量構(gòu)建和測(cè)試,為了打包解決方案-平臺(tái)-統(tǒng)一接入腳本概述:統(tǒng)一某種類型的項(xiàng)目或代碼的公共動(dòng)作(比如編譯,執(zhí)行ut,靜態(tài)檢查,包上傳等)到一個(gè)腳本或工具里面,用戶只需要輸入路徑配置即可完成CI的配置,減少用戶學(xué)習(xí)和使用成本。C++:

寫好腳本ci_execcompile_dir=$dir1ut_dir=$dir2st_dir=$dir3Java(ant為例):解決方案-平臺(tái)-統(tǒng)一環(huán)境管理-Jenkins管理環(huán)節(jié)通過(guò)Jenkins本身管理構(gòu)建環(huán)境,slave正在以后即可做。通過(guò)Jenkins多Slave配置完成:規(guī)劃好SVN里面目錄Confbin等在Slave機(jī)器上配置bin目錄到$PATH優(yōu)點(diǎn):使用方便,測(cè)試通過(guò)以后直接提交到SVN即可更新Jenkins直接輻射到各個(gè)Slave,更新方便缺點(diǎn):沒(méi)有整體視圖SubversionJenkinsmasterJenkinsslave1Jenkinsslave1…修改工作區(qū)CheckIn解決方案-平臺(tái)-presubmit方案-client模式Dev工作區(qū)SubversionCheckSvnServiceUpload.py專用提交腳本Check.py檢查:提交的注釋里面是否有指定加密串通知:通過(guò)對(duì)應(yīng)人Upload.py:1.檢查是否被模塊ownerCodereview且被Approved2.在內(nèi)存文件系統(tǒng)tmpfs中快速run編譯和ut3.做CodeStyle檢查以及靜態(tài)檢查4.成功則自動(dòng)提交,在注視里面加標(biāo)記5.失敗給予提示upload.py–i33896–I后為codereviewid目的:把問(wèn)題扼殺在提交到代碼庫(kù)之前,減少影響Dev工作區(qū)SourceControlSystemCheckSvnServicepresubmit.py腳本檢查、信息搜集、打diff、上傳Check.py檢查:提交的注釋是否有指定加密串通知:通過(guò)對(duì)應(yīng)人兩種Presubmit模式-Client/Server模式Presubmit服務(wù)器驗(yàn)證、提交解決方案-平臺(tái)-報(bào)表平臺(tái)jenkins構(gòu)建的報(bào)表平臺(tái)保存如下數(shù)據(jù)構(gòu)建成功率構(gòu)建時(shí)長(zhǎng)測(cè)試覆蓋率接入率等有開源插件可支持?jǐn)?shù)據(jù)報(bào)表展現(xiàn)!解決方案-實(shí)施-先試點(diǎn)試點(diǎn)項(xiàng)目選擇:交付壓力小的重點(diǎn)項(xiàng)目成立聯(lián)合虛擬項(xiàng)目組運(yùn)作做好評(píng)估:缺陷率,代碼質(zhì)量等試點(diǎn)目標(biāo)目標(biāo):摸索經(jīng)驗(yàn)平臺(tái)建立樹立標(biāo)桿建立影響透明效果取得重視解決方案-實(shí)施-制度化接口人制度:1.需要實(shí)施CI部門指定接口人2.每個(gè)部門對(duì)應(yīng)CI實(shí)施責(zé)任人3.對(duì)CI實(shí)施接口人進(jìn)行trainingCI平臺(tái)需求管理流程:1.把CI平臺(tái)當(dāng)做“產(chǎn)品”來(lái)做2.明確需求管理流程3.排期實(shí)現(xiàn),可視化進(jìn)度沉淀制度1.把CI實(shí)施框架和FAQ沉淀到wiki2.每周專人值班輔助接口人3.常見問(wèn)題沉淀到wiki合作,而非推廣總結(jié)平臺(tái)總體架構(gòu):統(tǒng)一平臺(tái),包服務(wù)器,統(tǒng)一出口構(gòu)建平臺(tái):構(gòu)建平臺(tái),管理依賴,支持分布,增量編譯公用腳本:封裝復(fù)雜操作,減少dev學(xué)習(xí)和使用成本環(huán)境管理:puppet,利用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論