第一章 Jenkins是什麼?
Jenkins 是一個可擴展的持續集成引擎。web
主要用於:數據庫
- l 持續、自動地構建/測試軟件項目。
- l 監控一些定時執行的任務。
Jenkins擁有的特性包括:服務器
- l 易於安裝-只要把jenkins.war部署到servlet容器,不須要數據庫支持。
- l 易於配置-全部配置都是經過其提供的web界面實現。
- l 集成RSS/E-mail經過RSS發佈構建結果或當構建完成時經過e-mail通知。
- l 生成JUnit/TestNG測試報告。
- l 分佈式構建支持Jenkins可以讓多臺計算機一塊兒構建/測試。
- l 文件識別:Jenkins可以跟蹤哪次構建生成哪些jar,哪次構建使用哪一個版本的jar等。
- l 插件支持:支持擴展插件,你能夠開發適合本身團隊使用的工具。
1 Jenkins的由來
目前持續集成(CI)已成爲當前許多軟件開發團隊在整個軟件開發生命週期內側重於保證代碼質量的常見作法。它是一種實踐,旨在緩和和穩固軟件的構建過程。而且可以幫助您的開發團隊應對以下挑戰:分佈式
- l 軟件構建自動化 :配置完成後,CI系統會依照預先制定的時間表,或者針對某一特定事件,對目標軟件進行構建。
- l 構建可持續的自動化檢查 :CI系統能持續地獲取新增或修改後簽入的源代碼,也就是說,當軟件開發團隊須要週期性的檢查新增或修改後的代碼時,CI系統會不斷確認這些新代碼是否破壞了原有軟件的成功構建。這減小了開發者們在檢查彼此相互依存的代碼中變化狀況須要花費的時間和精力(說直接一點也是錢啊,呵呵)。
- l 構建可持續的自動化測試 :構建檢查的擴展部分,構建後執行預先制定的一套測試規則,完成後觸發通知(Email,RSS等等)給相關的當事人。
- l 生成後後續過程的自動化 :當自動化檢查和測試成功完成,軟件構建的週期中可能也須要一些額外的任務,諸如生成文檔、打包軟件、部署構件到一個運行環境或者軟件倉庫。這樣,構件才能更迅速地提供給用戶使用。
部署一個CI系統須要的最低要求是,一個可獲取的源代碼的倉庫,一個包含構建腳本的項目。svg
下圖歸納了CI系統的基本結構:工具
該系統的各個組成部分是按以下順序來發揮做用的:測試
1. 開發者檢入代碼到源代碼倉庫。優化
2. CI系統會爲每個項目建立了一個單獨的工做區。當預設或請求一次新的構建時,它將把源代碼倉庫的源碼存放到對應的工做區。網站
3. CI系統會在對應的工做區內執行構建過程。ui
4. (配置若是存在)構建完成後,CI系統會在一個新的構件中執行定義的一套測試。完成後觸發通知(Email,RSS等等)給相關的當事人。
5. (配置若是存在)若是構建成功,這個構件會被打包並轉移到一個部署目標(如應用服務器)或存儲爲軟件倉庫中的一個新版本。軟件倉庫能夠是CI系統的一部分,也能夠是一個外部的倉庫,諸如一個文件服務器或者像Java.net、 SourceForge之類的網站。
6. CI系統一般會根據請求發起相應的操做,諸如即時構建、生成報告,或者檢索一些構建好的構件。
Jenkins就是這麼一個CI系統。以前叫作Hudson。
如下是使用Jenkins的一些理由:
- l 是全部CI產品中在安裝和配置上最簡單的。
- l 基於Web訪問,用戶界面很是友好、直觀和靈活,在許多狀況下,還提供了AJAX的即時反饋。
- l Jenkins是基於Java開發的(若是你是一個Java開發人員,這是很是有用的),但它不只限於構建基於Java的軟件。
- l Jenkins擁有大量的插件。這些插件極大的擴展了Jenkins的功能;它們都是開源的,並且它們能夠直接經過web界面來進行安裝與管理。
1.1 Jenkins的目標
Jenkins的主要目標是監控軟件開發流程,快速顯示問題。因此能保證開發人員以及相關人員省時省力提升開發效率。
CI系統在整個開發過程當中的主要做用是控制:當系統在代碼存儲庫中探測到修改時,它將運行構建的任務委託給構建過程自己。若是構建失敗了,那麼CI系統將通知相關人員,而後繼續監視存儲庫。它的角色看起來是被動的;但它確能快速反映問題。
特別是它具備如下優勢:
- l Jenkins一切配置均可以在web界面上完成。有些配置如MAVEN_HOME和Email,只須要配置一次,全部的項目就都能用。固然也能夠經過修改XML進行配置。
- l 支持Maven的模塊(Module),Jenkins對Maven作了優化,所以它能自動識別Module,每一個Module能夠配置成一個job。至關靈活。
- l 測試報告聚合,全部模塊的測試報告都被聚合在一塊兒,結果一目瞭然,使用其餘CI,這幾乎是件不可能完成的任務。
- l 構件指紋(artifact fingerprint),每次build的結果構件都被很好的自動管理,無需任何配置就能夠方便的瀏覽下載。
轉:http://www.cnblogs.com/zz0412/tag/jenkins/