1. 程式人生 > ><一>Jenkins實戰應用--Jenkins介紹

<一>Jenkins實戰應用--Jenkins介紹

聯系 這一 無需 幫助 size 提醒 官網 -i -c

<h2>系列匯總</h2>

[v_act]這是一個系列文章,大大小小到今天驚然發現竟然已經累計二十篇了,也就不得不做一個小匯總。回想當初寫第一篇文章的時候,就已經決心事無巨細,一應認真的走下來,回頭遮望,看著皇皇這麽多文章,一股強烈的成就感就此油然而生,於是便有了這些匯總整理。在這個過程當中,好像也幫助過不少的人,這是讓我尤其開心的事情,同時也結識了一些誌同道合的朋友,再沒有比這更讓人覺得愉悅的事情啦!也希望以後寫出更多類似的系列文章。

文章匯總地址如右:<a href="http://www.eryajf.net/category/%E6%9C%AF%E4%B8%9A%E4%B8%93%E6%94%BB/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4/jenkins">Jenkins入門教程。</a>

如果相中哪個,點擊進去便是。希望正在讀這段話的你能夠在這個小系列中獲得自信以及喜悅![/v_act]

<h2>一,持續集成和Jenkins介紹</h2>

[gallery ids="61"]

對於很多做嵌入式軟件的朋友來說,可能從來都沒有聽說過持續集成這個詞,也就無從接觸過Jenkins這個工具軟件。自去年轉調部門後,除了解了設計模式外,還有幸接觸到了Jenkins。

那什麽是持續集成?Jenkins具體用來做什麽,對軟件開發有什麽益處呢?總得來說,這兩者主要是涉及一個軟件質量的主題,特別是團隊開發軟件項目。下面就來介紹介紹下這兩者。
<h3>一,持續集成的概念</h3>

持續集成,Continuous integration ,簡稱CI。

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

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

以我經過的項目(假設為A項目)為例進行描述。

首先,解釋下集成。我們所有項目的代碼都是托管在SVN服務器上。每個項目都要有若幹個單元測試,並有一個所謂集成測試。所謂集成測試就是把所有的單元測試跑一遍以及其它一些能自動完成的測試。只有在本地電腦上通過了集成測試的代碼才能上傳到SVN服務器上,保證上傳的代碼沒有問題。所以,集成指集成測試。

再說持續。不言而喻,就是指長期的對項目代碼進行集成測試。既然是長期,那肯定是自動執行的,否則,人工執行則沒有保證,而且耗人力。對此,我們有一臺服務器,它會定期的從SVN中檢出代碼,並編譯,然後跑集成測試。每次集成測試結果都會記錄在案。完成這方面工作的就是下面要介紹的Jenkins軟件。當然,它的功能遠不止這些。在我們的項目中,執行這個工作的周期是1天。也就是,服務器每1天都會準時地對SVN服務器上的最新代碼自動進行一次集成測試。


<h3>二,持續集成的特點</h3>
它是一個自動化的周期性的集成測試過程,從檢出代碼、編譯構建、運行測試、結果記錄、測試統計等都是自動完成的,無需人工幹預;

需要有專門的集成服務器來執行集成構建;

需要有代碼托管工具支持;
<h3>三,持續集成的作用</h3>
保證團隊開發人員提交代碼的質量,減輕了軟件發布時的壓力;

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

上面我們了解了持續集成的知識。既然有這麽多的好處,那我們怎麽樣實現它呢?這就是接下來要介紹的名角:Jenkins軟件。
<a href="http://www.eryajf.net/wp-content/uploads/2018/03/2018032402511062.png"><img src="http://www.eryajf.net/wp-content/uploads/2018/03/2018032402511062.png" alt="" class="aligncenter size-full wp-image-62" /></a>
<h2>貳, Jenkins</h2>
<h3>一,Jenkins介紹</h3>
Jenkins,原名Hudson,2011年改為現在的名字,它 是一個開源的實現持續集成的軟件工具。官方網站:http://jenkins-ci.org/。

Jenkins 能實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展示項目構建的趨勢和穩定性。

目前持續集成(CI)已成為當前許多軟件開發團隊在整個軟件開發生命周期內側重於保證代碼質量的常見做法。它是一種實踐,旨在緩和和穩固軟件的構建過程。並且能夠幫助您的開發團隊應對如下挑戰:

軟件構建自動化 :配置完成後,CI系統會依照預先制定的時間表,或者針對某一特定事件,對目標軟件進行構建。

構建可持續的自動化檢查 :CI系統能持續地獲取新增或修改後簽入的源代碼,也就是說,當軟件開發團隊需要周期性的檢查新增或修改後的代碼時,CI系統會不斷確認這些新代碼是否破壞了原有軟件的成功構建。這減少了開發者們在檢查彼此相互依存的代碼中變化情況需要花費的時間和精力(說直接一點也是錢啊,呵呵)。

構建可持續的自動化測試 :構建檢查的擴展部分,構建後執行預先制定的一套測試規則,完成後觸發通知(Email,RSS等等)給相關的當事人。

生成後後續過程的自動化 :當自動化檢查和測試成功完成,軟件構建的周期中可能也需要一些額外的任務,諸如生成文檔、打包軟件、部署構件到一個運行環境或者軟件倉庫。這樣,構件才能更迅速地提供給用戶使用。

部署一個CI系統需要的最低要求是,一個可獲取的源代碼的倉庫,一個包含構建腳本的項目。


<h3>二,Jenkins特點</h3>
易安裝:僅僅一個 java -jar jenkins.war,從官網下載該文件後,直接運行,無需額外的安裝,更無需安裝數據庫;

易配置:提供友好的GUI配置界面;

變更支持:Jenkins能從代碼倉庫(Subversion/CVS)中獲取並產生代碼更新列表並輸出到編譯輸出信息中;

支持永久鏈接:用戶是通過web來訪問Jenkins的,而這些web頁面的鏈接地址都是永久鏈接地址,因此,你可以在各種文檔中直接使用該鏈接;

集成E-Mail/RSS/IM:當完成一次集成時,可通過這些工具實時告訴你集成結果(據我所知,構建一次集成需要花費一定時間,有了這個功能,你就可以在等待結果過程中,幹別的事情);

JUnit/TestNG測試報告:也就是用以圖表等形式提供詳細的測試報表功能;

支持分布式構建:Jenkins可以把集成構建等工作分發到多臺計算機中完成;

文件指紋信息:Jenkins會保存哪次集成構建產生了哪些jars文件,哪一次集成構建使用了哪個版本的jars文件等構建記錄;

支持第三方插件:使得 Jenkins 變得越來越強大;


<h3>三,其它集成工具</h3>
其它比較著名的持續集成工具有:CruiseControl,TeamCity,Continuum等。


<h3>四,嵌入式軟件集成</h3>
據我了解,在嵌入式軟件開發中,很少人有用到持續集成工具。個人覺得最主要的原因是:嵌入式軟件與硬件聯系比較緊密,很多時候難以滿足持續集成的條件——構建自動化測試。

但我們還是可以有所作為。在設計應用軟件時,把邏輯業務與硬件相關功能區分開來,對邏輯業務部分編寫單元測試,然後做集成測試。

當然,對於小型的嵌入式應用軟件就沒必要做這個集成工作了。

本文根據網上一篇佳文整理而成。原文鏈接: http://velep.com/archives/867.html

<一>Jenkins實戰應用--Jenkins介紹