持續集成的魅力:工具推薦

什麼是持續集成?Continuous Integration, CIcss

它是一種軟件項目管理方法,依據資產庫(源碼,類庫等)的變動自動完成編譯、測試、部署和反饋。html

持續集成的背景

  在沒有CI的狀況,開發人員進行開發,測試人員測試,最後支持人員進行部署和代碼的發佈。java

  這是一種線性的開發流程,一旦測試通不過,可能最後就沒辦法交付產品。程序員

  有句話說得對,目前軟件開發最大的難度在於:數據庫

  1 肯定軟件的需求apache

  2 肯定軟件的剩餘量服務器

 

  沒法肯定軟件的需求,是由於需求隨着開發的落實在不斷的變化。最開始用戶不知道本身想要什麼,你給了他一種方案,他便在這種方案基礎上想象更多,因而不管提交什麼產品,都不會是用戶最終想要的。eclipse

  沒法肯定軟件的剩餘量,是由於咱們沒法像造汽車同樣,看到整個開發過程。也許生於的20%工做,要花費80%的時間。maven

  

  持續集成採用」水滴石穿、分而治之「的思想,既然咱們不能立刻交付一個可用的產品,爲何不隨時提供一個可使用的產品呢。工具

  經過上面的結構圖,就能夠看到CI持續集成的基本思想。

  就是程序員在向版本庫中提交代碼後,CI持續集成服務器自動發現或者定時發現變動,依據這些源碼,從新構建產品的編譯、測試、審查、部署和反饋過程。

如何作到持續集成

  根據上面的思想,持續集成工具須要作到下面幾個功能:

  1 自動構建:要求無人值守,若是人工來操做,那就沒有持續集成的必要了。

  2 發現版本庫的變動:經過輪詢或者定時,或者程序員使用命令,處罰持續集成發現版本庫的變動

  3 反饋機制:在出現問題時,能及時的把問題反饋給正確的人(提交者、測試者、管理者)

  4 回滾:在出現問題後,擁有回滾到可交付的能力。

  5 純淨的構建環境:每一次都應該把以前的環境刪除乾淨,讓每一次構建都是一個新的構建。

  6 完善的集成功能:代碼的測試,審查都應該作到完善。若是單純的利用它作持續的編譯,那就是大材小用了。

  

  利用什麼工具都是其次的,關鍵是要注意養成持續集成的習慣,軟件的開發流程以及代碼的編寫,都應該注意CI的風格。

  好比編寫具備單元測試的代碼,命名符合代碼審查的規範等等。

  另外在持續集成的時候,還須要注意:

  1 爲了不每次過多出現問題的構建,開發者在提交代碼的時候,最好在本地獨立的構建一次。能夠自行運行構建腳本,模擬構建。

  2 因爲數據庫與編碼的分離,最好把數據庫相關的DDL\DML等腳本一塊兒放入版本庫中,這樣CI進行構建的時候,能夠連同數據庫一塊兒從新構建。

推薦的工具資料

  【1】《持續集成:軟件質量改進和風險下降之道》

  【2】持續集成:http://www.martinfowler.com/articles/continuousIntegration.html

  【3】CI持續集成工具:

    Apache Continuum:  http://continuum.apache.org/

    CruiseControl:  http://cruisecontrol.sourceforge.net/

    Hudson:  http://hudson-ci.org/

    Jekins:  http://jenkins-ci.org/

    Luntbuild:  http://jenkins-ci.org/

  【4】構建腳本:

    Ant:  http://ant.apache.org/

    Maven:  http://maven.apache.org/

  【5】測試:

    JUinit

    DbUnit

    Floyd

    HtmlUnit

    JWebUnit

    SQLUnit

  【6】自動化審查:

    CheckStyle:  http://sourceforge.net/projects/eclipse-cs/files/

    JavaNCSS:  http://mojo.codehaus.org/javancss-maven-plugin/

    JDepend:  http://www.clarkware.com/software/JDepend.html

    PMD:  http://pmd.sourceforge.net/

    Siminan:  http://www.redhillconsulting.com.au/products/simian/

  【7】反饋

    Jabber:  http://www.jabber.org/

相關文章
相關標籤/搜索