持續集成就是快速且高頻率地自動構建 項目的全部源代碼 ,併爲項目成員提供豐富的反饋信息。 java
一次完整的持續集成包含以下步驟: 數據庫
1)持續編譯 (舊代碼應所有刪除,從新編譯全部最新代碼) apache
2)持續數據庫集成 (清理數據庫,從新建立表結構) windows
3)持續測試 (單元測試儀 + 集成測試) tomcat
4)持續審查 ( Checkstyle 、 PMD 、測試覆蓋率,頻率能夠低一些) 服務器
5)持續部署 框架
6)持續反饋 maven
持續集成的好處 : svn
1) 儘早暴露問題。(修復問題成本低) 工具
2) 減小重複操做。
3) 簡化項目發佈。
4) 創建團隊信心。
Hudson(http://hudson-ci.org ) 提供了靈活的插件擴展框架,許多公司都選擇了它,如 JBoss (http://hudson.jboss.org ) 和 Sonatype (https://grid.sonatype.org/ci ) 。
Hudson 必須運行在 JRE1.5 以上。
能夠從http://hudson-ci.org/下載最新的安裝包。下載完成後得到一個hudson.war。
下載後爲 hudson.war 能夠直接運行。
java –jar hudson.war
其默認端口爲 8080 ,能夠訪問 http://localhost:8080 。也能夠使用 --httpPort 指定端口:
java –jar hudson.war –httpPort=8082
也能夠將 war 包部署到 Jetty , Tomcat 等 Web 容器中。( context path 爲 /hudson )。
1) 啓動
下載後爲 hudson.war 能夠直接運行。
java –jar hudson.war
其默認端口爲 8080 ,能夠訪問 http://localhost:8080 。也能夠使用 --httpPort 指定端口:
java –jar hudson.war –httpPort=8082
2) 中止
在命令行按下Ctrl+C鍵。
也能夠將war包部署到Jetty,Tomcat等Web容器中。(context path爲/hudson)。
1) 創建installTomcat.bat文件
2) 在文件中填入如下內容:
rem 安裝Hudson服務
set CATALINA_BASE=D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35
set CATALINA_HOME=D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35
call D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35\bin\service.bat install Hudson
說明:CATALINA_BASE設置的是tomcat的根目錄。
注意:tomcat須要下載windows專用版的tomcat纔會有service.bat文件。
3) 運行該bat文件
1. 安裝svn
2. 建立svn倉庫
3. 將代碼導入到倉庫中
導入前應先使用mvn clean清除項目輸出文件。
而後將account項目的代碼導入到「svn倉庫/account/trunk」中。
在 Hudson 登陸頁面左邊的「管理 Hudson 」 (Manage Hudson), 「系統管理」( Configure System )中能夠配置多個 JDK ( Hudson 能夠自動安裝 JDK ),多個 Maven(Hudson 能夠自動安裝 Maven ), Email notification 配置(SMTP 服務器,接收者列表等)。
Hudson 在新建任務時,可選的任務類型有「 Build a free-style software project 」(不只支持 Maven ,還支持 Ant 、 Shell 等其餘構建工具)和「 Build a maven2 project 」(使用 Hudson 自帶的 Maven )。前者須要的配置多一點,後者會使用Hudson自帶的maven。除非你已經十分熟悉Hudson,不然推薦使用free-style類型。
下面依次介紹free-style任務的各類配置。
Discard Old Builds選項配置如何拋棄舊的構建。若是每次構建相關的文件都保存下來,磁盤空間將被漸漸消耗光。Hudson爲此提供了兩種方式讓用戶選擇保留哪些構建任務的相關文件:
1) Days to keep builds:若是其值爲非空的N,就僅保留N天以內的構建文件。
2) Max # of builds to keep:若是#非空,就僅保留最多#個最近構建的相關文件。
如:保留10個最近的構建,在Max # of builds to keep一欄中輸入「10」便可。
在項目配置頁面Source Code Managerment部分,選擇Subversion,而後在Repository URL文本框中輸入項目的Subversion倉庫地址(如:svn://127.0.0.1/account/trunk)。
而後單擊enter credential填寫配置倉庫的認證信息。
Hudson 支持三種方式觸發構建:
1) Build after other projects are built:在其餘項目構建完成後構建本項目。
2) Build periodically:週期性的構建本項目。
3) Poll SCM:週期性的輪詢源碼倉庫,發現有更新時構建本項目。
通常使用第三種。
Hudson 使用著名的 UNIX 任務調試工具Cron(http://en.wikipedia.org/wiki/Cron)所使用的配置方式來配置輪詢代碼倉庫的頻率:用 5 個字段表示不一樣的時間單位,字段之間用空格分隔:分(0-59) 時(0-23) 日(1-31) 月(1-12) 星期幾(0-7,0、7都表示週日)。
幾種特殊匹配符:
1) * :匹配範圍內任何值
2) M-N :匹配 M-N 範圍內任何值
3) A , B , … , Z :逗號匹配多個值
4) */X 或 M-N/X :範圍內能被 X 整除的
星期幾與日期是或的關係。
對於一個健康的項目,常見的作法是:每隔10分鐘輪詢代碼倉庫,Schedule對應的配置爲:*/10 * * * *。
能夠用「#」在Schedule配置文本框中進行註釋。
配置Hudson使用運行Maven命令構建項目:
1)單擊Build部分的Add build step,選擇Invoke top-level Maven targets;
2)而後選擇一個安裝好的Maven版本,輸入maven命令如:clean deploy便可。
Hudson 的當前任務狀態有:
藍色:最近一次構建是成功的
紅色:最近一次構建是失敗的
黃色:最近一次構建成功但不穩定(測試失敗了)
灰色:未被執行過或者已被禁用
任務長期的狀態的天氣狀況有:
晴: 80% 以上的集成是成功的
晴有云: 60%-80% 的集成是成功的
多雲: 40%-60% 的集成是成功的
雨: 20%-40% 的集成是成功的
雷雨: 20% 如下的集成是成功的
Maven 能夠自定義視圖從而對任務進行分類,並自定義想監控的屬性列。
在任務配置頁面中能夠設置」Post-build Actions」,選擇」Publish JUnit test result report」,將」Test report XML」設爲**/target/surefire-reports/TEST-*.xml,Hudson就會在任務狀態頁面中顯示maven-surefire-plugin生成的測試報告。
在 Maven 構建命令中添加 –Dmaven.test.failure.ignore ,失敗的測試就不會致使構建失敗,任務狀態就不會變成紅色,但會變成黃色。
Hudson 可以在訪問源碼倉庫的時候自動獲取相關用戶信息並存儲。
爲用戶添加詳細信息,如E-mail地址,它將被用來發送郵件反饋。
1) 系統界面(E-mail Notificatoin;
2) 而後輸入如下信息:
SMTP server:SMTP郵件服務器地址
Default user email suffix:默認用戶郵件後綴。該功能能夠在用戶沒有配置郵件地址的時候(這裏假定配置的郵件後綴爲「@foo.com」),在Hudson須要發郵件給如mike用戶的時候就會發送到 mike@foo.com。
System Admin E-mail Address:系統管理員郵件地址,即Hudson郵件提示所用的發送地址。
Hudson URL:Hudson服務器地址。
SMTP Authentication:SMTP相關的認證配置。
Hudson 默認會在如下狀況發送 email notification:
1) 失敗的構建
2) 成功構建後的一次不穩定構建
3) 失敗或不穩定構建後的一次成功構建
用戶能夠配置是否是每個不穩定構建都發 email 。
Hudson 使用用戶目錄下的 .hudson/ 目錄做爲其工做目錄,能夠經過設置HUDSON_HOME來改變其位置。
userContent 目錄能夠存聽任何用戶文件,經過 Hudson 的 Http 服務能夠訪問該文件(在Http://localhost:8080/userContent 下)。