[獨孤九劍]持續集成實踐(一)- 引子

 

本系列文章包含:html

[獨孤九劍]持續集成實踐(一)- 引子服務器

[獨孤九劍]持續集成實踐(二)– MSBuild語法入門分佈式

[獨孤九劍]持續集成實踐(三)- Jenkins安裝與配置(Jenkins+MSBuild+GitHub)工具

 

一、概念描述(瞭解的話直接跳到第2部分)                                                              

1.一、個人理解

持續集成(Continuous Integration),以自動化方式實現「從開發階段性完畢到部署上線以前」這一階段的工做。固然也可作到簡單部署,複雜的要涉及到持續部署階段。單元測試

1.二、理論層面的描述

下面爲摘抄各網站的定義:學習

百度:持續集成是一種軟件開發實踐,即團隊開發成員常常集成它們的工做,經過每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。測試

搜狗:持續集成是指開發階段,對項目進行持續性自動化編譯、測試,以達到控制代碼質量的手段。持續集成是一種軟件開發實踐。網站

1.三、應用與組成

在敏捷開發過程當中,持續集成的使用尤其頻繁。而每次的集成都是經過自動化的構建來驗證,包括自動編譯、發佈和測試,從而儘快地發現集成錯誤,讓團隊可以更快的開發內聚的軟件。ui

1.3.一、持續集成的核心價值

持續集成的核心價值在於:spa

1) 持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利於減小重複過程以節省時間、費用和工做量;

2) 持續集成保障了每一個時間點上團隊成員提交的代碼是能成功集成的。換言之,任什麼時候間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能;

3) 持續集成還能利於軟件自己的發展趨勢,這點在需求不明確或是頻繁性變動的情景中尤爲重要,持續集成的質量能幫助團隊進行有效決策,同時創建團隊對開發產品的信心。

1.3.二、持續集成的原則

業界廣泛認同的持續集成的原則包括:

1) 須要版本控制軟件保障團隊成員提交的代碼不會致使集成失敗。經常使用的版本控制軟件有 IBM Rational ClearCase、CVS、Subversion 等;

2) 開發人員必須及時向版本控制庫中提交代碼,也必須常常性地從版本控制庫中更新代碼到本地;

3) 須要有專門的集成服務器來執行集成構建。根據項目的具體實際,集成構建能夠被軟件的修改來直接觸發,也能夠定時啓動,如每半個小時構建一次;

4) 必須保證構建的成功。若是構建失敗,修復構建過程當中的錯誤是優先級最高的工做。一旦修復,須要手動啓動一次構建。

說了很多廢話,如今開始上乾貨。

二、正文                                                                                                                

2.一、持續集成系統的組成

一個完整的構建系統必須包括:

1) 一個自動構建過程,包括自動編譯、分發、部署和測試等。

2) 一個代碼存儲庫,即須要版本控制軟件來保障代碼的可維護性,同時做爲構建過程的素材庫。

3) 一個持續集成服務器。

其中1)自動構建和2)代碼存儲庫,都是有相應的軟件配合,開發人員須要的學習成本不高,複雜在各模塊的相互配合,這一期間可能須要大量時間去調試。一旦調試完畢,對於以後工做效率的提高是成倍的。

2.二、MSBuild

自動構建,作.Net開發的同仁相信大多數都會使用VS,而Visual Studio用MSBuild構建.NET項目。MSBuild所需的僅僅是一個腳本,在腳本中指定要執行的target;項目中的.csproj和.vbproj 文件都是MSBuild腳本。當編寫好MSBuild腳本後,只須要一條簡單的命令,便可實現代碼的編譯與測試工做。下面將介紹MSBuild的基本語法。

[獨孤九劍]持續集成實踐 – MSBuild語法入門

雖然MSBuild實現了自動編譯與測試,可是在調用MSBuild時,咱們仍是經過輸入命令進行調用的,這裏摻雜了人工干預的成分,所以要將這部分工做剔除。

2.三、版本管理

目前主流的版本管理有傳統的SVN、分佈式的Git和Mercurail各有利弊,自行選擇。

【資料中使用的是Mercurail,我之前沒用過,也懶得配環境學習了;我使用的是Git,why?由於有GitHub(能夠在線託管,嘿嘿;固然,若是是局域網環境,能夠本身搭建版本管理服務器,Git、SVN、Mercurail隨你喜歡)。若是你知道其餘好用的在線版本管理工具,請必定要留言給我,讓我學習下。】

2.四、Jenkins

Jenkins是一個開源項目,提供了一種易於使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專一於更爲重要的業務邏輯實現上。同時 Jenkins 能實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展現項目構建的趨勢和穩定性。下面將介紹 Jenkins 的安裝與配置。

[獨孤九劍]持續集成實踐 - Jenkins安裝與配置

Jenkins配置好了,之後每次變動代碼,提交新的版本後,Jenkins都會自行執行單元測試,在其設置頁面,還能夠根據須要將運行報告發送給指定的人,方便跟蹤。

三、最後                                                                                                                

整個的部署實際上無需花費過多時間,並且若是已搭建好持續集成服務器,那麼每次新增的只是一個Job以及它的配置。麻煩的就是在剛學習時,會出現各類難以預料的問題,有時會是一個簡單的拼寫錯誤,有時多是版本等問題致使你所看到的資料所描述的,與你實際搭建的環境所須要的不一致,所以就須要本身學會排查、解決這些問題。總的來講,持續集成是個好東西。

相關文章
相關標籤/搜索