本文搭建的代碼自動化測試平台:sonar+Jenkins+maven是在centos6.8版本上進行的,本章主要介紹sonar+Jenkins+maven環境的搭建,項目配置內建将在接下來的章節進行詳細介紹。
搭建的過程中需要的各軟體版本如下:
sonar:7.2.1
MySQL:5.7.22
Apache tomcat :8.5.32
jenkins:2.134
jdk8
maven:3.5.4
git:采用yum安裝
一、安裝配置sonar 1、sonar介紹Sonar是一個用于代碼品質管理的開源平台,用于管理源代碼的品質,可以從七個次元檢測代碼品質,Sonar 可以內建不同的測試工具,代碼分析工具,以及持續內建工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。sonar最大的特點就是插件化,可以根據不同的場景需求進行插件化安裝,以Java代碼檢測為,但同時可以檢測Python、C++等多種語言。
通過用戶端插件分析源代碼,sonar用戶端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式,并通過各種不同的分析機制對項目源代碼進行分析和掃描,并把分析掃描後的結果上傳到sonar的資料庫,通過sonar
web界面對分析結果進行管理,架構圖為:
sonar架構圖
可以從七個次元檢測代碼品質:
(1)複雜度分布(complexity):代碼複雜度過高将難以了解
(2) 重複代碼(duplications):程式中包含大量複制、粘貼的代碼而導緻代碼臃腫,sonar可以展示源碼中重複嚴重的地方
(3) 單元測試統計(unit tests):統計并展示單元測試覆寫率,開發或測試可以清楚測試代碼的覆寫情況
(4) 代碼規則檢查(coding rules):通過Findbugs,PMD,CheckStyle等檢查代碼是否符合規範
(5) 注釋率(comments):若代碼注釋過少,特别是人員變動後,其他人接手比較難接手;若過多,又不利于閱讀
(6) 潛在的Bug(potential bugs):通過Findbugs,PMD,CheckStyle等檢測潛在的bug
(7) 結構與設計(architecture & design):找出循環,展示包與包、類與類之間的依賴、檢查程式之間耦合度
2、sonar安裝配置 本文介紹的Sonar以官網最新的版本:sonar-7.2.1版本為示範依據,sonar各版本下載下傳可以參考sonar官網: https://www.sonarqube.org/ 将下載下傳的sonar-7.2.1.zip上傳至伺服器的/iyunwen/server/下面,重命名為:sonarqube。 jdk8所在目錄為:/iyunwen/server/jdk8,下載下傳位址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html snoar需要将代碼檢測上傳至資料庫,此處用MySQL,資料庫MySQL安裝在/iyunwen/server/mysql,MySQL采用5.7.22版本,下載下傳連結為: https://dev.mysql.com/downloads/mysql/5.7.html#downloads(1)、修改啟動jdk
修改檔案路徑:/iyunwen/server/sonarqube/conf/wrapper.conf,需要制定Java的jdk版本,sonar啟動采用jetty啟動,為Java容器
注意:wrapper.java.command=/iyunwen/server/jdk8/bin/java一定要指定到jdk下面的Java,不能隻指定/iyunwen/server/jdk8,否則啟動的時候報如下錯誤:
--> Wrapper Started as Daemon
Launching a JVM...
Unable to start JVM: Permission denied (13)
JVM exited while loading the application.
JVM Restarts disabled. Shutting down.
(2)、MySQL中建立sonar資料庫賬号密碼:
建立sonar通路資料庫:robot3_sonar
指定sonar通路資料庫的賬号:sonar,密碼:Sonar2018
sonar建立的資料庫和賬号可以根據實際情況指定,此處不用導入資料庫,表明sonar資料庫是在啟動的過程中自動建立資料庫
(3)、修改sonar配置檔案,指定資料庫
修改配置檔案所在目錄:/iyunwen/server/sonarqube/conf/sonar.properties
設定sonar連接配接資料庫的連接配接資訊,如下圖
(4)啟動sonar:
進入/iyunwen/server/sonarqube/bin/linux-x86-64------部署的伺服器為centos6.8,是以進入sonar/bin/linux-x86-64下執行start.sh,執行指令為:
./start.sh start,會有如下報錯(日志路徑為:/iyunwen/server/sonarqube/logs/sonar.log)
sonar啟動不能使用root權限啟動,建立sonar使用者啟動:
加入開啟啟動項:vim /etc/rc.local,su sonar -lc "/iyunwen/server/sonarqube/bin/linux-x86-64/sonar.sh start"
(5)通路sonar背景服務:位址為ip:9000,本文為192.168.1.160::9000,賬号和密碼預設為:admin/admin
(6)、漢化語言包:在administration--->marketplace--->plugins中找到chinese packet install之後提示重新開機後,整個界面就變成了中文顯示 3、jenkins安裝 jenkins官網位址為: https://jenkins.io/ ,下載下傳了最新的2.134版本,采用war的方式利用tomcat容器釋出: tomcat下載下傳可以通過官網: https://tomcat.apache.org/download-80.cgi,tomcat解壓可以直接使用,此處tomcat解壓到/iyunwen/server/下命名為tomcat_jenkins
需要修改tomcat_jenkins一些參數,包括如下設定:
(1)、修改bin/catalina.sh檔案,指定jdk和記憶體大小:
(2)指定tomcat啟動使用者:
(3)上傳jenkins.war檔案至webapps下面,啟動tomcat:
在webapps下面将解壓jenkins檔案,将其重命名為ROOT(PS:通路jenkins位址如果不加工程名,需要将jenkins檔案重新命名為ROOT,否則位址後面要加jenkins項目名稱)
(4)通路配置:
此處的通路位址為:192.168.1.160:8080,如果在tomcat部署war包的過程中沒有将jenkins重命名為ROOT,則通路位址為:192.168.1.160:8080/jenkins
解鎖jenkins,根據提示擷取對應的檔案内容,輸入即可解鎖
解鎖jenkins
自定義jenkins,此處我選擇安裝推薦的插件
建立jenkins管理賬号
配置通路位址
以上過程配置完成之後,即可進入jenkins背景了,如下圖:
4、maven安裝配置maven的官網下載下傳位址為:
http://maven.apache.org/download.cgi,此處下載下傳的是zip檔案
将maven壓縮包解壓到/iyunwen/server下面,重命名為maven
5、jenkins內建git+maven+sonar配置 (1)插件配置登入jenkins背景,找到系統管理---->插件管理---->可選插件
其中必選安裝的插件有git相關、maven相關、sonar相關,詳細清單如下:
安裝完成以後,可以在已安裝中檢視
(2)全局工具配置jenkins中,系統管理--->全局工具配置 全局工具配置主要配置maven、git、sonar、jdk等的環境變量,非常重要,對于存有疑問的地方,可以點選每一個選項中的問号(?)會出現相關提示。
a、maven配置此處maven安裝在/iyunwen/server/maven下面
b、jdk配置jdk采用的jdk8,路徑為/iyunwen/server/jdk8
c、git配置git是在伺服器端采用yum安裝:yum -y install git,git路徑為/usr/bin/git
d、sonar-scanner配置由第一章的架構圖知,sonar-scanner為用戶端,jenkins通過sonar調用檢測代碼
sonar-scanner下載下傳位址為:
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner下載下傳Linux版本的sonar-scanner,上傳伺服器至/iyunwen/server下面,重命名為sonar-scanner,對于sonar在jenkins的配置為
e、maven配置 (3)、系統設定在jenkins中,系統管理---->系統配置中
a、maven項目記憶體配置 b、sonar的server端資訊配置sonar server的配置有2項,一個為server的位址資訊,一個為通信的token,如下圖
對于sonar的token生成方式,需要admin登入sonar,右上角--->我的賬号---->安全---->生成令牌,令牌的名字可以任意填寫,将生成的token填寫至jenkins server配置資訊中
6、開始建構項目進行代碼檢測jenkins背景---->建立任務,如下圖
點選完成之後,進入配置界面,此處的配置需要額外注意,有一些特别需要注意的點,否則會出現問題
(1)源碼管理指定項目的git位址
此處,如果git沒有安裝或者沒有将jenkins的使用者key檔案添加到git伺服器中,則會報以下錯誤
此處需要注意的點有:
a、生成key檔案添加git伺服器由于jenkins使用的tomcat使用者啟動,是以添加到git服務中的Key檔案必須是tomcat的,如果添加的是root的key檔案,此處仍然有問題
生成的key檔案在:/iyunwen/server/tomcat_jenkins//.ssh/id_rsa.pub,将id_rsa.pub添加到git伺服器的SSH檔案中即可
b、系統中存在git服務,并確定用tomcat使用者,可以git clone項目 (2)建構采用sonar-scan掃描代碼,建構中需要執行shell指令
/iyunwen/server/sonar-scanner/bin/sonar-scanner -X -Dsonar.host.url=http://192.168.1.160:9000 -Dsonar.language=java -Dsonar.projectName=Task -Dsonar.projectVersion=1.0 -Dsonar.projectKey=Task -Dsonar.sources=src -Dsonar.projectBaseDir=/iyunwen/server/tomcat_jenkins/.jenkins/workspace/task
其中,sonar-scanner指定了sonar的資訊,因為需要修改好/iyunwen/server/sonar-scanner/conf/sonar-scanner.properties,修改内容如下:
#----- Default SonarQube server
sonar.host.url=http://192.168.1.160:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.jdbc.url=jdbc:mysql://192.168.1.160:3306/robot3_sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar2018
儲存以上配置,開始進行建構即完成了task項目的代碼檢測過程,檢測的結果,登入sonar背景,可以檢視到
到此,centos搭建代碼代碼檢測平台:sonar+Jenkins+maven搭建篇已完成,後續章節我們将進入sonar代碼檢測的深度內建分析和插件使用方面