hudson是類似CruiseConrol和Continuum的持續(xù)集成工具。要求軟件項(xiàng)目已經(jīng)使用了自動(dòng)構(gòu)建腳本,比如ant或者maven 等。持續(xù)集成工具可在此基礎(chǔ)上進(jìn)一步自動(dòng)化,實(shí)現(xiàn)比如定期(比如每日)構(gòu)建或者由事件觸發(fā)的構(gòu)建(比如版本控制器的提交活動(dòng))。
hudson的官方網(wǎng)址:
https://hudson.dev.java.net/
jboss是采用hudson持續(xù)集成,見:
http://hudson.jboss.org/hudson/
hudson安裝
下載新的war版本:
https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=2761&expandFolder=2761&folderID=0
復(fù)制到tomcat的webapps目錄下。
hudson設(shè)置
針對(duì)tomcat,中文的設(shè)置,否則get請(qǐng)求中的中文由于使用默認(rèn)iso-8859-1而發(fā)生錯(cuò)誤。server.xml文件:
設(shè)置MAVEN_HOME,通過Manager Hudson>Configure System。
hudson主目錄和升級(jí)
hudson在當(dāng)前用戶下建立了供它使用的目錄,一般在:
~/.hudson
hudson因此不需要數(shù)據(jù)庫存儲(chǔ)系統(tǒng)狀態(tài),也使升級(jí)hudson比較容易。升級(jí)只需要替換掉webapps目錄下的war文件,并刪除以前war文件解壓縮的目錄即可。因?yàn)樗信渲梦募辉趙ar相關(guān)路徑中。
hudson版本更新十分活躍,這種方式為升級(jí)帶來便利。
如果tomcat是作為守護(hù)進(jìn)程運(yùn)行,將無法用到當(dāng)前用戶的目錄。需要在tomcat的啟動(dòng)腳本中設(shè)置:
export HUDSON_HOME=/srv/hudson
持續(xù)集成前的準(zhǔn)備
持續(xù)集成需要自動(dòng)構(gòu)建,比如maven或者ant。以下準(zhǔn)備了一個(gè)簡單的maven2 web項(xiàng)目,并提交到版本控制器中(subversion)?赏ㄟ^以下鏈接訪問:
https://dev.easymorse.com/svn/demos/helloworld/
用戶名和密碼:guest/password
創(chuàng)建maven構(gòu)建任務(wù)
點(diǎn)擊new job鏈接,輸入項(xiàng)目名和項(xiàng)目類型,因?yàn)轫?xiàng)目是maven的,要選擇maven2 project。見:
下一步的配置部分,必須填寫的地方不多,svn項(xiàng)目的url及認(rèn)證信息,hudson會(huì)通過自帶的svn客戶端checkout代碼并完成構(gòu)建。還有一個(gè)是構(gòu)建觸發(fā)的策略,普通的是定期構(gòu)建(build periodically),語法和cron類似,這里設(shè)置了每天21:40構(gòu)建一次。另外poll scm可能更常用一些,它和定期構(gòu)建配置方式類似,不同的是它將檢查版本倉庫中代碼是否變化,只有變化才做構(gòu)建。
查看構(gòu)建結(jié)果
創(chuàng)建任務(wù)后,在hudson首頁上可看到列表中的該項(xiàng)目:
點(diǎn)擊該項(xiàng)目任務(wù)鏈接,會(huì)看到該項(xiàng)目所有構(gòu)建的相關(guān)信息:
點(diǎn)擊workspace,可以瀏覽該項(xiàng)目在svn上的源代碼,或者下載zip打包的源代碼。點(diǎn)擊permalinks下的構(gòu)建鏈接,可以下載該構(gòu)建的生成文件,在本例的web項(xiàng)目,是war文件。
高級(jí)功能
以上是一個(gè)簡單的項(xiàng)目示例。hudson支持一些這里沒有涉及到的高級(jí)功能:
測試代碼的統(tǒng)計(jì)結(jié)果報(bào)告;
為指定的構(gòu)建版本打標(biāo)簽(原來都用subclipse打標(biāo)簽,現(xiàn)在用這個(gè),更直觀);
管理用戶信息;
認(rèn)證與安全(這方面hudson實(shí)現(xiàn)的過于簡單);
和問題管理工具比如JIRA和trac等集成,生成版本的修改報(bào)告;
具有插件機(jī)制,可以通過插件增加功能,比如和jira、trac等集成,還有檢查代碼風(fēng)格和檢查代碼質(zhì)量等的插件。