使用Hudson進行持續集成

Alan最近接了一個任務,就是使用Hudson進行持續集成,持續集成是怎麼個概念,32語也說不清,有興趣的童鞋去找我二奶度娘問問就知道了,說到Hudson就不得不提一下jenkins,目前來說用jenkins的應該要比Hudson多吧,畢竟jenkins的更新頻率還是要比Hudson快,兩者其實是五十步笑百步,會玩Hudsonjenkins也難不到哪去,所以jenkins暫時就不多介紹了。

在介紹Hudson之前給大家推薦一本書,這本書是來自許曉斌老師的《Maven實戰》,本篇文章會借鑑該書的內容,小Alan也把這本書看完了,這是一本非常值得購買的書,作爲一名程序猿可以買下來收藏。

接下來,讓我們一起進入Hudson的世界:

第一步:安裝Hudson

Hudson下載地址:http://hudson-ci.org/,下載完成後就能獲得一個hudson.war文件,如圖:

注意事項:Hudson必須運行在JRE1.5或更高的版本上。

最簡單的啓動方式是在命令行直接運行hudson.war(這裏不演示這種方式,有興趣的童鞋去找我二奶度娘問問就知道怎麼玩了)。

Hudson.war顧名思義,既然是一個war文件,自然可以被部署到各種Web容器中,如TomcatGlassfishJettyJboss等。

這裏以Tomcat7爲例,只需要把Hudson.war扔到Tomcat的部署目錄webapps下,然後去bin目錄,運行startup.bat,如圖:

tomcat啓動完成後,打開瀏覽器訪問http://localhost:8080/hudson就能看到hudson的界面了。

首次運行Hudson會進入如下一個界面,要你選擇你所需要安裝的插件,選擇好需要安裝的插件後點擊install或者finish,如圖:

以後再次訪問Hudson都會直接進入Hudson的首頁,如圖:

第二步:準備使用Hudson進行持續集成所需要的環境

①準備JDK運行環境:JDK環境還要我教你怎麼搭建的話,你後面可以不用看下去了,作爲一名猿,我是絕對不希望看見你這樣的猿的,交配還得看基因好不好呢,好了不開玩笑了。

②準備Subversion倉庫:在正式創建Hudson持續集成任務之前,需要準備好版本控制系統。常見的版本控制工具有CVSSubversionGitMercurial等。Subversion可能是當前使用範圍最廣的版本控制工具吧?反正我不知道大家喜歡用什麼,但是我還是比較喜歡用Subversion,通俗點說就是SVNSVN的安裝我就不多扯了,我二奶度娘肯定知道的,沒事多找我二奶談談人生,聊聊理想。

③準備項目管理框架:這裏我會使用Maven,個人在工作的過程中覺得Maven真的是非常不錯的,沒用過的猿或者用過的猿都建議深入學習一下,Maven的安裝也是so簡單,別告訴我你不會,不會找一下我二奶度娘。

第三步:Hudson的基本系統設置

在創建Hudson持續集成任務之前,需要對Hudson系統做一些基本的配置,包括JDK安裝位置和Maven安裝位置,Hudson會使用這些配置好的JDKMaven進行持續集成任務。也可以使用Ant或者Shell來持續集成項目,一樣的要配置好安裝位置。

點擊Hudson首頁左邊的「系統管理」,然後單擊頁面右側的「系統設置」以進入系統設置界面,如圖:

在系統設置頁面,首先要配置的是Hudson將使用的JDK。在頁面中找到對應的部分,然後單擊Add JDK按鈕,Hudson就會提示用戶進行安裝。Hudson默認會提示自動安裝JDK,可以看到Install automatically的複選框是被選上的,但是不建議自動安裝,一般作爲一個開發人員,本機上都是有JDK的,沒必要花時間去等待Hudson再次下載JDK。手動輸入本機JDK的位置(往往就是JAVA_HOME環境變量的值)。

可以配置多個JDK,需要項目支持多個不同版本JDK的時候非常有用,這裏不多介紹。

Maven的配置與JDK類似,不再多說,如圖:

最後,別忘了單擊頁面下方的Save按鈕保存系統設置,如圖:

第四步:創建Hudson任務

單擊頁面左邊的新建任務,然後在頁面右邊選擇任務的名稱及類型。對於一般的maven項目來說,可選擇的類型有Build a free-style software projectBuild a maven2 project。前者不僅支持maven項目,還支持其它類型的構建工具,如AntShell。這裏我們選擇第一種,這種方式更可控制,當任務出現問題的時候也更容易檢查,如圖:

輸入任務名稱,並選擇free-style類型後,單擊OK按鈕即可進入詳細的任務配置頁面,如圖:

第五步:Hudson任務的基本配置

首先是項目的名稱和描述,接着是一個重要的選項Discard Old Builds。該選項配置如何拋棄舊的構建。Hudson每執行一次構建任務,就可以保存相應的源代碼、構建輸出、構建報告等文件。很顯然,如果每次構建相關的文件都保存下來,將會漸漸耗光磁盤空間。爲此,Hudson提供兩種方式讓用戶選擇保留哪些構建任務相關的文件,它們分別爲:

Days to keep builds:如果其值爲非空的N,就僅保留N天之內的構建文件。

Max # of builds to keep:如果#非空,就僅保留最多#個最近構建的相關文件。

如圖,表示最多保留10個最近的構建,如圖:

第六步:Hudson任務的源碼倉庫位置

接着需要配置項目的源碼控制系統。在項目配置頁面的Source Code Management部分,選擇Subversion單選按鈕,然後在Repository URL文本框中輸入項目的Subversion倉庫地址。一般來說,該部分的其他選項保留默認值即可(如果在界面沒有看見這些東西,則說明Hudson Subversion Plug-in插件沒有安裝),如圖:

 

需要注意的是,如果訪問Subversion倉庫需要認證,Hudson會自動探測並提示用戶輸入認證信息。因爲我用的是局域網上的SVN,所以不需要認證,這裏沒有切實的圖片給大家演示,如圖:

 

單擊enter credential後,Hudson會彈出一個頁面讓我們選擇認證方式並輸入認證信息。輸入正確信息之後,Hudson就能讀取倉庫源代碼了,如圖採用用戶名和密碼的方式進行認證:

第六步:Hudson任務的構建觸發配置

Build Triggers部分配置的是觸發構建的方式。可選的三種方式分別爲:

Build after other project are built:在其他項目構建完成之後構建本項目。

Build periodically:週期性地構建本項目。

Poll SCM:週期性地輪詢源碼倉庫,發現有更新的時候構建本項目。

我們選擇第三種方式,也是最常用的構建方式,既然是輪詢,就需要配置輪詢的頻率,Hudson使用了著名的UNIX任務調度工具Cron所使用 的配置方式。大家自己找我二奶度娘瞭解一下。如圖:

 

我配置的是每隔15分鐘輪詢一次。

第七步:Hudson任務的構建配置

接下來要配置Hudson使用運行Maven命令構建項目。單擊Build部分中的Add build step下三角按鈕,然後選擇Invoke Maven 3(如果沒有看見這個,說明沒有安裝Hudson maven3 Plugin),如圖:

 

這裏就會默認使用我們在系統配置中配置的maven構建項目,指定好要運行的命令,如圖:

需要注意的是,日常持續集成任務如果成功的話,都會生成快照版的項目構建。如果維護了一個私服,那麼持續集成任務就應當自動將構建部署到私服中,供其他項目使用。單擊最下方的Save按鈕保存配置。這時,可以單擊頁面左邊的「立即構建」來手動觸發第一次集成。如圖:

這樣,一個簡單的持續集成任務就配置成功了。