1、 文檔說明html
本文檔用於說明Jenkins+tomcat+sonar+SVN集成分析代碼的搭建過程和可能遇到的問題及問題的相關解決辦法;本文檔針對內部人員公開,搭建過程當中一些工做是爲遠程訪問Jenkins、sonar而作,如果在本地服務器搭建則不須要作相關工做;Jenkins和sonar的搭建環境爲Linux、mysql、jdk1.七、jenkins、sonar4.5等,相關的版本說明會在後續文檔中詳細描述。java
2、 jdk1.7安裝mysql
一、 準備jdk安裝包linux
去官方網站選擇你須要的版本,下載rpm包,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ;web
二、 安裝jdksql
(1)安裝rpm包,命令:rpm -ivh jdk-6u45-linux-amd64.rpm數據庫
(2)配置JDK環境變量:編程
a.[root@localhost tools]# vim $HOME/.bash_profile
b.添加下面信息:
#Java Profilevim
export JAVA_HOME=/usr/java/jdk1.6.0_45 (按照本身的真實目錄)
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar瀏覽器
export PATH=$PATH:$JAVA_HOME/bin
c.保存退出;
d.使環境變量生效:[root@localhost tools]#source /etc/profile
e.檢測jdk是否安裝成功:[root@localhost tools]# echo $JAVA_HOME
/usr/java/jdk1.6.0_45(顯示這一行內容表示安裝成功)
或者:[root@localhost tools]# java –version
輸入上述命令會下顯示jdk的版本,表示安裝成功
3、 sonar安裝與配置
一、 安裝sonar
(1)Sonar介紹
Sonar是一個用於代碼質量管理的開源平臺,用於管理Java源代碼的質量。經過插件機制,Sonar 能夠集成不一樣的測試工具,代碼分析工具,以及持續集成工具,好比pmd-cpd、checkstyle、findbugs、Jenkins。經過不一樣的插件對這些結果進行再加工處理,經過量化的方式度量代碼質量的變化,從而能夠方便地對不一樣規模和種類的工程進行代碼質量管理。
同時 Sonar 還對大量的持續集成工具提供了接口支持,能夠很方便地在持續集成中使用 Sonar。
此外,Sonar 的插件還能夠對 Java 之外的其餘編程語言提供支持,對國際化以及報告文檔化也有良好的支持。
(2)下載軟件:wget http://dist.sonar.codehaus.org/sonar-3.7.4.zip
(3)解壓軟件:unzip sonar-3.7.4.zip
(4)配置數據庫
Apache Derby 是Sonar自帶而且默認安裝使用的數據庫,此外Sonar對以下數據庫提供支持:MySQL 5.x, Oracle 10g XE, Postgresql, MS SqlServer等,本文以mysql爲例介紹如何配置數據庫:
這裏首先須要配置數據庫信息:
前提是你已經安裝了mysql數據庫,這裏將不作數據庫安裝的介紹;
登陸數據庫命令:mysql –uroot -p
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all on sonar.* to sonar identified by 'sonar';
mysql> grant all on sonar.* to sonar@'192.168.5.105' identified by 'sonar';
mysql> flush privileges;
二、 sonar環境配置
(1)配置文件修改
[root@localhostdata]# vim home/dev/sonar-3.7.4/conf/sonar.properties
(這裏爲sonar的安裝路徑下的conf文件夾裏面的sonar.properties)
修改以下字段(就是配置數據庫信息,其餘不用動):
# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=root
sonar.jdbc.password=123456(這裏爲連接數據庫的用戶名和密碼)
#----- Embedded Database (default)
# It does not accept connections from remote hosts, so the
# server and the analyzers must be executed on the same host.
#sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar
# H2 embedded database server listening port, defaults to 9092
#sonar.embeddedDatabase.port=9092
#----- MySQL 5.x
sonar.jdbc.url=jdbc:mysql://192.168.5.105:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
(備註:sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar如果遠程部署,連接數據庫的地址建議寫爲IP地址,有時系統不能解析localhost,以防出錯)
# By default, ports will be used on all IP addresses associated with the server.
sonar.web.host=192.168.5.105(IP地址)
# Web context. When set, it must start with forward slash (for example /sonarqube).
# The default value is root context (empty value).
sonar.web.context=/sonar(默認爲「/」,也能夠寫成「/sonar」;如果「/」,訪問時用IP加端口號就能夠訪問了,如果寫成「/sonar」,訪問時需在端口號後面加上「/sonar」)
# TCP port for incoming HTTP connections. Disabled when value is -1.
sonar.web.port=9001(訪問端口號)
(2)啓動sonar
編輯.bash_profile,添加環境變量SONAR_HOME
$ vi $HOME/.bash_profile
修改爲以下內容:
PATH=$PATH:$HOME/bin
SONAR_HOME=$HOME/sonar
退出
export PATH SONAR_HOME
使環境變量生效
Source $HOME/.bash_profile
運行以下命令啓動sonar,其它操做系統sonar均提供了啓動腳本
$ ${SONAR_HOME}/bin/linux-x86-64/sonar.sh start
或者在bin/ linux-x86-64/下執行 ./ sonar.sh
在瀏覽器中訪問: http://localhost:9001/sonar (上下文默認爲「/」,上面配置文件中修改成「/sonar」,訪問時就加上「/sonar」),運行界面以下:
4、 sonar-runner安裝與配置
一、 sonar-runner的安裝
sonar-runner的安裝與sonar一致;先下載安裝包,而後解壓安裝包,再添加環境變量
編輯.bash_profile,添加環境變量SONAR_HOME
$ vi $HOME/.bash_profile
修改爲以下內容:
PATH=$PATH:$HOME/bin
SONAR_RUNNER_HOME=$HOME/sonar-runner
退出
export PATH SONAR_HOME
使環境變量生效
Source $HOME/.bash_profile
二、 sonar-runner的配置
修改sonar.host.url、sonar.jdbc.url、sonar.jdbc.username、sonar.jdbc.password、sonar的登陸名和密碼,修改爲實際的sonar配置
至此,sonar-runner安裝完成
5、 Jenkins安裝
一、 Jenkins部署
jenkins.war文件,直接放置在Tomcat的webapps目錄下,啓動Tomcat服務;
修改tomcat下的配置文件server.xml
二、 訪問Jenkins
訪問:http://127.0.0.1:8010/jenkins
能夠查看到如下界面,jenkins部署完成
三、 遇到的問題及解決辦法
(1)tomcat部署Jenkins時不能解壓Jenkins文件,是由於tomcat裏的server.xml配置文件中多了【xmlValidation="false" xmlNamespaceAware="false】這兩個配置項,刪除以後從新啓動tomcat能夠解決問題
(2)tomcat啓動是,部署Jenkins時報錯【SEVERE: Failed to initialize Jenkins hudson.util.AWTProblem: java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.】
解決辦法:緣由:由於用到了圖形處理,java程序會去尋找linux上的圖形界面是否啓動
解決:不讓java尋找linux圖形界面便可,在java 啓動時加選項java -Djava.awt.headless=true
實現:若是是tomcat,在/tomcat/bin/catalina.sh中修改成
JAVA_OPTS=-Djava.awt.headless=true
6、 Soanr與Jenkins集成
一、安裝sonar jenkins plugin 插件
在Jenkins的插件管理中選擇sonar jenkins plugin ,該插件可使每次構建時都調用sonar進行代碼度量
進入配置頁面對sonar插件進行配置,以下圖:
二、構建項目
點擊新建
輸入項目名稱:
輸入SVN地址:
Svn地址有中文,須要配置以下:
增長構建配置中選擇 invoke standalone sonar analysis,並按照以下配置(注意設置Encoding編碼,根據要分析的代碼編碼格式設置)
點擊保存,進入主頁面,能夠看到新建的項目,點擊項目右邊的小箭頭,點擊當即構建,即開始從SVN下載源碼
點擊項目運行結果
點擊console output即
可查看控制檯打印結果。
應用程序構建時就會自動觸發Sonar對代碼的檢查,經過訪問sonar便可查看分析結果
三、 遇到的問題及解決辦法
Jenkins與sonar集成時須要安裝插件,在Jenkins插件管理裏面不能安裝插件是能夠去【https://wiki.jenkins-ci.org/display/JENKINS/SonarQube+plugin】下載插件,而後上傳到Jenkins插件管理裏就能夠了