轉載於:http://sinye.iteye.com/blog/572153
一、所用開發工具
1. Hudson: Hudson 是一種革命性的開放源碼 CI 伺服器,它從以前的 CI伺服器吸取了許多經驗 教訓。Hudson 最迷人的特性之一是它很容易配置:很難找到更容易設定的 CI 伺服器,也很難找到開箱即用特性如此豐富的CI 伺服器。Hudson 容易使用的第二個原因是它具有強大的外掛程式架構 ,所以很容易添加特性,例如添加tomcat外掛程式後,可以方將build好的war包方便的部署到Tomcat裡。:http://hudson-ci.org/
2. Maven2:Maven 是一個頂級的 Apache Software Foundation 開源項目,建立它最初是為了管理 Jakarta Turbine 項目複雜的構建過程。從那以後,不論是開源開發項目還是私人開發項目都選擇 Maven 作為項目構建系統。:http://maven.apache.org/download.html
3. Subversion(svn):版本控制軟體,和它功能相似的工具有cvs,perforce等。:http://www.subversion.org.cn/
4. Hudson的自動部署外掛程式,::https://hudson.dev.java.net/files/documents/2402/106347/deploy.hpi
二、工具的安裝及設定
1. Maven2的安裝:把maven-2.0.4-bin.zip解壓到D:\maven-2.0.4(或者你自己想解壓的位置,我是如此配置的)下面就是配置環境變數了,這和1.0的版本是一樣的。(1)MAVEN_HOME:D:\maven-2.0.4 (2)在Path 中加入%MAVEN_HOME%\bin
這樣配置就OK了。測試是否安裝成功,可以在命令列下輸入mvn -v,出現如下介面,說明安裝成功
2. Hudson的安裝:Hudson的安裝有兩種方式(1)可以將Hudson部署到Tomcat下面運行,將下載的hudson.war直接放到Tomcat的webapp下,啟動tomcat就ok了
(2)可以使用命令啟動hudson。步驟:首先下載hudson.war,然後可以在一個盤符下建立一個檔案夾,如D:\hudson(自己可以隨意建立),然後將這個路徑設定環境變數(別說你不會設定環境變數哦),Hudson_Home=D:\hudson,最後使用命令java -jar hudson.war啟動hudson
3. Svn的安裝:svn的安裝比較簡單,下載好安裝檔案後,一路next即可。
三、Maven2+Hudson+Svn的整合
這裡比較重要了,這三樣的結合主要就是在這裡來進行配置的,而Maven2和Svn的配置都是依賴於Hudson的,所以重點講講Hudson的配置
1. Hudson的配置
用上述的Hudson的安裝方法安裝好Hudson後,就可以通過瀏覽器http://localhost:8080/hudson來開啟Hudson的頁面了,如下(如果你已經build過工程的話,會在這裡顯示出來哪些成功了,哪些失敗了)
2. Hudson的全域配置
接下來要對Hudson進行全域設定了,點擊左邊列表菜單Manage Hudson,然後點擊Configure System。可以對hudson進行系統配置,包括全域路徑和變數設定等。如
(1):System Message 當然了這是表面的東西啦,你可以寫點隨意的東西,比如HelloHudson啊,然後弄個Logo圖片什麼的,它也支援HTML語言,可以把這個歡迎介面弄的相當漂亮,不詳述。
(2):Quiet period 這個值是表示你可以讓你的構建有等待時間,以防止在提交代碼的過程中去開始構建。這裡是全域的變數,我習慣在每個項目裡面去設定,因為我使用hudson搭建的項目有SVN的還有VSS的,這個等待時間的值肯定會不一樣。(如果你想在這裡設定可以查看右邊的“協助”)
(3):Enable security 這裡是hudson許可權的相應設定,選擇該項後,如:
這裡可以保留預設設定,如果你想對每個使用者進行相應的許可權操作,選擇Authorization項下的Project-based Matrix Authorization Strategy這個選項就可以進行相應的設定了,如所示:
這裡可以保留預設設定,如果你想對每個使用者進行相應的許可權操作,選擇Authorization項下的Project-based Matrix Authorization Strategy這個選項就可以進行相應的設定了,如所示:
(4)Global properties這塊設定預設即可
(5)Maven這裡的設定,就是取個名字,然後路徑中指定maven2的解壓路徑。如所示
在這裡設定時,我一般去掉Install automatically,而是直接指定MAVEN_HOME,我的maven是裝在C:\Program Files\apache-maven-2.2.1-bin\apache-maven-2.2.1(依個人設定)這裡的,直接填入即可。
(6)JDK設定
Jdk的設定是必須的,如果你在這裡沒有設定jdk的路徑的話,在build工程的時候有可能會報這個錯誤,如所示,
所以正確的設定也是去掉Install automatically選項,直接填寫名稱和 JAVA_HOME
我的JAVA_HOME是安裝在C:\Java\jdk1.6.0_02這裡的,所以直接填入即可。填寫好的JDK設定如:
(7)shell,Ant,Maven,CVS等等,這些可以不用設定。這裡就不做介紹啦,如果想瞭解的更深,右邊的“help”(右邊的藍色小問號)會有很大的協助。
(8):E-mail Notification 這個主要是寄件提醒,可以不用設定,要感興趣的話,可以這樣設定,具體參考右邊的藍色小問號。
SMTP server-->mail伺服器位址(127.0.0.1)
Default user e-mail suffix-->郵件的尾碼名(@123.com)
System Admin E-mail Address-->管理使用者的郵件帳號123@123.com
Hudson URL-->訪問hudson的URL(http://127.0.0.1:8080)
至此,Hudson的全域配置就差不多了…...
3. 開始建立job
點擊左側列表菜單的New Job,出現如下介面
填寫Job name,然後選中Build a maven2 project,依個人項目設定,這裡講Maven2的工程,點擊OK按鈕。進入job的設定頁面(這裡是重點,在這裡我們可以看到Hudson的偉大,如何將Maven2的工程以及Svn整合起來)如所示
(1): Project Name 在你建立項目的時候已經取過名字了,TestJob.如果你哪天想改名字,就在這裡改就可以了.
(2): Description 這裡主要是寫對TestJob這個項目的描述,可以寫項目的參與者,項目起止日期等等,可以說這個地方是美化介面+項目描述+提示資訊等等,我對於介面美化沒有太多的要求,這個就留給大家去研究啦.
(3): Discard Old Builds 建議開啟這個選項(hudson有一個選項,可以從SVN上check out項目,但這個項目的位置好像只能是%hudson_home%/jobs/projectname/workspace下面,本人認為這是一個不合理的方式,因為很正常的大家都會在自己的目錄下建立項目後,然後再用hudson去構建環境。
Advanced Project Options: 這裡是表示你可以對你的項目構建進行一定的設定,它下麵包括兩個小的選項,
(1).Quiet period: 時間可以根據項目的需要來設定。哦,差點忘了,這裡的這個時間是說明從構建開始到項目真正開始構建之間的時間差,比如,我將此時間設為300S,說明TestJob在要開始構建之前會有5分鐘的時間緩衝,這個是非常人性化的,因為如果有大量的代碼需要提交,會需要很長時間,如果沒有等待時間的話很容易出現少代碼的情況導致整個構建過程的失敗。
(2).Use custom workspace:這個地方你可以將可以對外公布的東西放在一個特定的目錄下,然後把這裡的值設成該目錄,如:D:\hudson\jobs\TestJob\builds這樣的話,這個目錄下的東西是就公用的了。
Source Code Management:呵呵,這裡就是要結合版本控制工具的地方了,這裡就看你選用的是那種工具了,我用的是svn,所以設定如下
在Repository URL裡填入你的倉庫地址,svn有兩種地址,一種是http://.....這樣的,一種是svn://......的,我這裡是用的第二種方式,所以填入svn://192.168.0.245:56581/mydemo
(注意,這裡是工程的根目錄,也就是pom.xml所在的目錄,你可不要填寫成svn://192.168.0.245:56581/demo/src等的目錄了。要注意哦!!!)
Use update: 這裡選項勾上後,每次檢測到庫上有更新,就會使用svn update命令;如果沒有勾上的話,那每次使用的是svn checkout命令,理由是update要比checkout命令省相當多的時間。
Build Triggers:可以理解為你想以什麼樣的方式去觸發你的構建,以其它構建成功後為基礎,還是周期性的構建,還是根據poll SCM(變更觸發)來觸發構建。
我習慣選擇 Build periodically,並在Schedule中輸入 0 12,20 * * *。
註: Schedule的配置規則是有5個空格隔開的字元組成,從左至右分別代表:分 時 天 月 年。*代表所有,具體參考右面的藍色小問號
0 12,20 * * * 表示在任何年任何月的任何天的12和20點的0分 進行構建
Build和Build Settings沒有什麼特殊的設定,可以不用設定
Post-build Actions:這裡也可以說是做一些發布啊,善後啊之類的,可以看到有mail, artifacts, publish之類的。
☆Hudson的自動部署:
一般我們build成功一個項目後,Hudson會在%Hudson_home%/jobs/projecct_name/ workspace/ projecct_name/ target下發布一個項目的war包。(注釋:project_name是你的項目名稱,Hudson_home一般在C:\Documents and Settings\username\.hudson下。其中username是你當前的系統使用者,有來賓賬戶或者administrator等。呵呵,注釋是不是很無聊啊,為普及用,見諒。)但是我們想build成功後,就要看到我們項目進展的怎麼樣了,就想通過Tomcat來載入這個war包直接看效果,這時,我們不得不手動的把這個war包拷貝到Tomcat的webapp下,然後啟動Tomcat。很麻煩吧,這裡介紹的就是這種簡單的自動部署方法,可以通過Hudson的一個外掛程式,呵呵,現在前面提到的那個外掛程式就起大作用了。點擊左側列表菜單Manage
Hudson,然後選擇第三項Manage Plugins,這個選項的功能是管理Hudson外掛程式的,(或者直接輸入:http://localhost:8080/hudson/pluginManager/)在這裡說明了Hudson的擴充性有多麼的強大,在外掛程式管理中心點擊Advanced,在upload plugin 中上傳剛才下載的外掛程式,上傳完畢後需要重啟hudson才能完成安裝(即重啟tomcat),重啟後點擊New Job後,然後建立一個新的Job時(已有的項目,直接點擊進入項目,然後點左側的功能菜單configure),在配置頁面的Post-build
Actions項下面會多出一項功能:Deploy war/ear to a container,在這裡WAR/EAR file:就是填寫hudson所打好的war包路徑,之前說過,hudson打好的war包是放在這裡的,所以這裡就寫%Hudson_home%/jobs/projecct_name/ workspace/ projecct_name/ target/你的war檔案的名稱.war。Container選擇你的Tomcat的版本。Manager user name:填寫Tomcat的使用者名稱,預設是admin,
Manager password:填寫Tomcat的密碼,預設是空。Tomcat URL:填寫http://localhost:8080/就ok了,至此儲存就可以了,這樣,當你再build此工程的時候,war檔案會自動部署到你的tomcat的webapp目錄下。設定如所示