使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持續整合環境(二)

飄揚的紅領巾發表於2015-01-19

前言

    上一篇隨筆Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持續整合環境(一)介紹maven和nexus的環境搭建,以及如何使用maven和nexus統一管理庫檔案和版本,以及怎麼將自己的模組上傳至nexus私服,供其他模組引用。下面將主要介紹如何利用Jenkins、SVN、Tomcat以及Sonar來完成專案的自動化編譯、測試和釋出,以及檢查專案的程式碼質量。

利器Jenkins

    Jenkins源於另外一個持續整合工具Hudson,Hudson在oracle收購sun之前,是開源社群在開發和維護,oracle收購sun之後宣告擁有hudson的商標使用權,後來開發hudson的開源力量只能重新起個名字“Jenkins”來繼續開發,原Hudson則由oracle持續維護,但更新速度比較慢。

jenkins地址:http://jenkins-ci.org/

hudson地址:http://hudson-ci.org/

可以看到hudson官網右下角oracle的版權logo。我們這裡就使用Jenkins來搭建持續整合環境。

首先從官方上下載jenkins,http://mirrors.jenkins-ci.org/war/ 可以選擇不同的版本。下載完成後放置在伺服器某個目錄下,cd到該目錄下,執行:

java -jar jenkins.war

jenkins內建一個jetty容器,預設使用8080埠,如果你的8080被佔用了,請執行:

java -jar jenkins.war --httpPort=8081

 

當然你也可以直接把war包放到tomcat目錄下啟動,這樣jenkins就啟動起來了。

image

來到這個介面我們先做一個事情:系統配置,主要是配置maven和釋出外掛。

1、進入“系統管理”——>“系統設定”:

新增maven,將linux上安裝好的maven配置上去。

image

其他保持預設配置,儲存!

2、進入“系統管理”——>“管理外掛”——>“高階”上傳外掛

image

上傳完成之後,jenkins就具備了釋出web應用到tomcat各類容器的能力。

注:deploy.hpi外掛是我事先從網上下載好了,你也可以使用jenkins自帶的外掛安裝功能完成外掛安裝,但那個比較慢。

3、配置linux伺服器上的maven,跟上篇類似你也需要配置linux伺服器上的maven,使之連線到nexus私服,以及支援釋出模組到nexus上。

在<settings><servers></servers></settings>節點之間新增:

   1:    <server>  
   2:      <id>snapshots</id>  
   3:      <username>deployment</username>  
   4:      <password>123456</password>  
   5:    </server>  
   6:      <server>  
   7:      <id>releases</id>  
   8:      <username>deployment</username>  
   9:      <password>123456</password>  
  10:    </server>

在<settings></settings>節點之間新增:

   1:  <profiles>
   2:          <profile>
   3:              <id>dev</id>
   4:              <repositories>
   5:                  <repository>
   6:                      <id>local-nexus</id>
   7:                      <url>http://192.168.0.109:8081/nexus/content/groups/public/</url>
   8:                      <releases>
   9:                          <enabled>true</enabled>
  10:                      </releases>
  11:                      <snapshots>
  12:                          <enabled>true</enabled>
  13:                      </snapshots>
  14:                  </repository>
  15:              </repositories>
  16:          </profile>
  17:      </profiles>
  18:   
  19:      <!-- activeProfiles | List of profiles that are active for all builds. | -->
  20:      <activeProfiles>
  21:          <activeProfile>dev</activeProfile>
  22:      </activeProfiles>

 

完成這些配置,我們就可以在jenkins上新建專案了。

我們事先在eclipse中開發的三個專案:maven-parent(父專案,用於統一類庫版本)、maven-support(後端模組,支撐web專案)、maven-sample(web專案,依賴maven-support),依次來新增:

image

下一步進入後,主要配置兩個地址,svn和maven命令。

image

根據提示進行SVN使用者名稱、密碼認證即可。

image

對於maven-parent專案,我們執行install命令即可。儲存!

接著建立maven-support專案,由於該專案是後端模組,需要釋出到nexus伺服器上,所以稍有不同:

image

這裡需要執行deploy命令,將該專案釋出到nexus上。另外你最好配置該專案構建在maven-paremt執行之後開始:

image

最好儲存!

最好建立maven-sample專案,這是個web專案,配置又稍有不同:

image

執行package命令將專案打包成war包。下面做最重要的事情:將打包後的war包自動釋出到tomcat下:

image

注意幾點:

1、WAR/EAR files,一定要填寫相對地址;

2、Manager username、Manager password是你安裝的tomcat使用者名稱、密碼,如果沒有請透過tomcat的配置檔案tomcat-users.xml設定。

3、tomcat url為你安裝的tomcat訪問地址。

最後還是設定下構建順序,讓它在maven-support執行完成之後構建:

image

儲存!

jenkins首頁上就出現了三個我們建立好的專案,我們只需要構建maven-parent就可以了,因為我們設定了構建順序:

image

檢視構建資訊,可以看到構建的程式,專案先從svn更新下來,然後進行編譯,執行測試用例,打包,釋出的過程。整個過程都由jenkins完成,

image

image

至此jenkins就實現了自動化編譯、測試(自己寫測試用例)、打包釋出、部署。

image

可以看到tomcat上已經多了maven-sample應用。

image

部署Sonar

http://www.sonarqube.org/官網上下載sonar安裝包,解壓到系統目下,進入到bin目錄下,選擇你的系統版本,進入後執行:

./sonar.sh start

sonar就啟動起來了,預設的埠是9000,你也可以到conf/sonar.properties配置檔案中修改:

sonar.web.port:                           8066

image

在Jenkins安裝sonar外掛

和安裝deploy外掛方法類似,我們在系統管理——外掛管理中,上傳sonar外掛。安裝完成之後,請重啟jenkins。

image

配置jenkins的sonar外掛:

進入系統配置

image

根據你的情況配置sonar,我這裡僅僅修改過sonar的應用埠,所以只需要配置這個,其他保留預設值。

進入特定專案配置sonar:

image

image

選擇下maven版本,其他保留預設值。儲存!

然後開始構建專案,構建完成後,可以看到該專案的程式碼檢查結果已經被匯入到sonar平臺上,透過sonar系統就可以方便檢視該專案的程式碼質量情況:

sonar可以檢查程式碼的複雜度、程式碼重複、單元測試覆蓋率、是否有註釋、潛在bug等程式碼問題,對於sonar的專案介紹,可以進一步去研究摸索,在這裡僅介紹jenkins和sonar整合的方法,可以再實際工作時進一步研究。

image

image

小結

    本文主要介紹如何搭建jenkins以及怎麼利用maven、deploy外掛打包、釋出你的專案,最後使用jenkins和sonar配合進行專案的程式碼質量檢查。完成整個過程我們可以發現,以往的測試、打包、釋出、程式碼檢查的工作都可以由人工轉化工具來完成,讓程式設計師的寶貴時間集中在開發上。回過頭看Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持續整合環境(一)開頭的故事,我們可能會有不同的想法。

相關文章