持续集成实践
介紹
持續集成是一種軟件開發實踐。開發人員頻繁地集成各自的工作,一般至少一天一次。
每次的集成都被自動構建,測試,發現其中的問題。這樣,可以迅速的解決開發過程中的很多問題,而不是等到軟件開發完成之后。而軟件的質量,可以在很大程度上由一次次的自動化測試得到保障。
?
下面介紹以下本人團隊中目前的持續集成實現。
持續集成,首要的就是選擇持續集成服務器。
目前比較成熟的持續集成服務器很多,例如CruiseControl,Continuum,Luntbuild…
我這邊采用的是Jenkins(An extendable open source continuous integration server)
除了CI Server 外,我們還用到了svn,maven,ant,jira,fisheye。
?
下面詳細介紹一下我們項目的實施情況。
?
大致情況:
源碼管理方式
?? 主干
????? 分支1
???????? 測試分支
???????? 開發分支
????? 分支2
???????? 測試分支
???????? 開發分支
?? 項目有個主干。新需求開分支進行開發。容許并行需求開發。(多分枝情況)
?? 開發分支需要建立持續集成任務,按天集成;
測試分支在完成整體開發,或者大里程碑開發后集成測試。
? ?分支測試完成后,需要同步回主干。同步回主干前又需要先同步主干的更新
?
項目情況:1)需要出基礎包+增量包。且增量包的文件需要核對。
????????? 2)需要出前后臺包,前后臺包文件有所不同
????????? 3) 需要處理升級腳本
故決定采用ant 來控制打包流程,調用maven執行項目的編譯,測試工作。
?
開發
Jira 與 eclipse 集成。每次開發任務都關聯Jira任務(bug/改進/…)。
開發人員發起code review 請求。 Review人員每次都可以在jira上找到任務對應的文件內容修改。
?
自動化測試
Jenkins每天跑構造任務,自動測試,生成測試報告。分發問題給各開發人員。(email/jira)
?
開發分支每天打包編譯/發布/自動化測試,checkstyle
測試分支階段性打包
?
部署環境/配置文件
部署環境涉及 SIT,UAT,生成. 軟硬件部署形式都有點不同。Ant部署腳本+項目配置文件
?
具體流程:
1.?????? 任務建立階段
?
2.?????? 開發階段
?
2.1 開發環境:
采用Eclipse集成Jira 插件的形式,把開發與Jira任務更緊密結合起來。
(Mylyn + atlassianConnector 本文不做具體介紹)
當開發人員開始某個任務時,首先激活該任務。之后所做的所有修改,都會自動關聯到該任務。
當開發完成時,提交代碼,在Svn message 中加入Jira 任務ID(其實插件會自動加入該信息,開發人員不刪除即可).
這樣,當在Jira 上查看問題時,就可以查看到svn log(Jira需要安裝svn plugin)。
任務及對應的代碼自動關聯。如有需要, reviewer 可以很方便的查看代碼。
?
2.2?? 持續集成:
2.2.1 配置自動集成所有資源 (Jenkins 源碼管理)
每次新的任務下來都會建立對應的開發分支。
?
?
1.2.2????????? 按照國際慣例,開發最少1天集成1次。設定每天6點自動打包
?
1.2.3????????? 執行具體的構建工作
構建工作很簡單。
由于項目文件目錄遵循了maven規范,跑check style,unit test 等只需要執行 maven site 任務就行了。
?
Maven 測試結束后,跑了個后續的部署腳本,把測試報告文件發布到內部的應用服務器。
其實一開始還有計劃是把測試報告的內容按我們自定的負責人規則自動發布的jira上,但后來卻不了了之。
感覺這個想法,,,還是不錯的。
?
?
?? 其實Jenkins的配置還是很簡單,清晰的。
大多數任務都僅需配置個一下資源,Jenkins要跑的任務(例如maven腳本,或者ant腳本…),任務之間的前后關系。
?
3.?????? 測試(SIT,UAT,…)
?
測試環節因部署環境的不同,涉及到增量包,升級腳本及配置文件修改。
這些都主要是在ant腳本中完成。因此實現效果就是先執行maven編譯,之后ant在maven編譯結果的基礎上,處理各種具體需求。在遇到這種特別需求時,ant還是很給力的。不過ant腳本寫復雜之后,由于整個腳本是流程化的,測試起來還是很麻煩的。因此ant腳本的傳參,變量定義,調用方式都是值得慢慢斟酌的。
?
?? 拋開ant腳本,整體Jenkins任務卻是依舊簡單,清晰。
??
4.?????? 交付
?
?
轉載于:https://www.cnblogs.com/snake-hand/p/3161534.html
總結
- 上一篇: Commons IO方便读写文件的工具类
- 下一篇: asp.net导出excel-一行代码实