天天看點

jenkins持續內建簡介

  随着軟體開發複雜度的不斷提高,團隊開發成員間如何更好地協同工作以確定軟體開發的品質已經慢慢成為開發過程中不可回避的問題。尤其是近些年來,靈活(Agile) 在軟體工程領域越來越紅火,如何能再不斷變化的需求中快速适應和保證軟體的品質也顯得尤其的重要。

  持續內建正是針對這一類問題的一種軟體開發實踐。它倡導團隊開發成員必須經常內建他們的工作,甚至每天都可能發生多次內建。而每次的內建都是通過自動化的建構來驗證,包括自動編譯、釋出和測試,進而盡快地發現內建錯誤,讓團隊能夠更快的開發内聚的軟體。

持續內建中的任何一個環節都是自動完成的,無需太多的人工幹預,有利于減少重複過程以節省時間、費用和工作量;

持續內建保障了每個時間點上團隊成員送出的代碼是能成功內建的。換言之,任何時間點都能第一時間發現軟體的內建問題,使任意時間釋出可部署的軟體成為了可能;

持續內建還能利于軟體本身的發展趨勢,這點在需求不明确或是頻繁性變更的情景中尤其重要,持續內建的品質能幫助團隊進行有效決策,同時建立團隊對開發産品的信心。

業界普遍認同的持續內建的原則包括:

1)需要版本控制軟體保障團隊成員送出的代碼不會導緻內建失敗。常用的版本控制軟體有 IBM Rational ClearCase、CVS、Subversion 等;

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

3)需要有專門的內建伺服器來執行內建建構。根據項目的具體實際,內建建構可以被軟體的修改來直接觸發,也可以定時啟動,如每半個小時建構一次;

4)必須保證建構的成功。如果建構失敗,修複建構過程中的錯誤是優先級最高的工作。一旦修複,需要手動啟動一次建構。

由此可見,一個完整的建構系統必須包括:

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

一個代碼存儲庫,即需要版本控制軟體來保障代碼的可維護性,同時作為建構過程的素材庫。

一個持續內建伺服器。本文中介紹的 Jenkins 就是一個配置簡單和使用友善的持續內建伺服器。

Jenkins 是一個開源項目,提供了一種易于使用的持續內建系統,使開發者從繁雜的內建中解脫出來,專注于更為重要的業務邏輯實作上。同時 Jenkins 能實施監控內建中存在的錯誤,提供詳細的日志檔案和提醒功能,還能用圖表的形式形象地展示項目建構的趨勢和穩定性。Jenkins前身是hudson,Jenkins 是一個可擴充的持續內建引擎。

易于安裝-隻要把jenkins.war部署到servlet容器,不需要資料庫支援。

易于配置-所有配置都是通過其提供的web界面實作。

內建RSS/E-mail通過RSS釋出建構結果或當建構完成時通過e-mail通知。

生成JUnit/TestNG測試報告。

分布式建構支援Jenkins能夠讓多台計算機一起建構/測試。

檔案識别:Jenkins能夠跟蹤哪次建構生成哪些jar,哪次建構使用哪個版本的jar等。

插件支援:支援擴充插件,你可以開發适合自己團隊使用的工具。

jenkins持續內建簡介

1. 開發者檢入代碼到源代碼倉庫。

2. 系統會為每一個項目建立了一個單獨的工作區。當預設或請求一次新的建構時,它将把源代碼倉庫的源碼存放到對應的工作區。

3. 系統會在對應的工作區内執行建構過程。

4. (配置如果存在)建構完成後,CI系統會在一個新的構件中執行定義的一套測試。完成後觸發通知(Email,RSS等等)給相關的當事人。

5. (配置如果存在)如果建構成功,這個構件會被打包并轉移到一個部署目标(如應用伺服器)或存儲為軟體倉庫中的一個新版本。軟體倉庫可以是CI系統的一部分,也可以是一個外部的倉庫,諸如一個檔案伺服器或者像Java.NET、 SourceForge之類的網站。

6. 系統通常會根據請求發起相應的操作,諸如即時建構、生成報告,或者檢索一些建構好的構件。

本文轉自pizibaidu 51CTO部落格,原文連結:http://blog.51cto.com/pizibaidu/1917078,如需轉載請自行聯系原作者