天天看點

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

本文搭建的代碼自動化測試平台: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界面對分析結果進行管理,架構圖為:

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

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/
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
将下載下傳的sonar-7.2.1.zip上傳至伺服器的/iyunwen/server/下面,重命名為:sonarqube。
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
jdk8所在目錄為:/iyunwen/server/jdk8,下載下傳位址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
snoar需要将代碼檢測上傳至資料庫,此處用MySQL,資料庫MySQL安裝在/iyunwen/server/mysql,MySQL采用5.7.22版本,下載下傳連結為: https://dev.mysql.com/downloads/mysql/5.7.html#downloads
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

(1)、修改啟動jdk

修改檔案路徑:/iyunwen/server/sonarqube/conf/wrapper.conf,需要制定Java的jdk版本,sonar啟動采用jetty啟動,為Java容器

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

注意: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資料庫賬号密碼:

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

建立sonar通路資料庫:robot3_sonar

指定sonar通路資料庫的賬号:sonar,密碼:Sonar2018

sonar建立的資料庫和賬号可以根據實際情況指定,此處不用導入資料庫,表明sonar資料庫是在啟動的過程中自動建立資料庫

(3)、修改sonar配置檔案,指定資料庫

修改配置檔案所在目錄:/iyunwen/server/sonarqube/conf/sonar.properties

設定sonar連接配接資料庫的連接配接資訊,如下圖

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

(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使用者啟動:

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

加入開啟啟動項: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

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
(6)、漢化語言包:在administration--->marketplace--->plugins中找到chinese packet
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
install之後提示重新開機後,整個界面就變成了中文顯示 3、jenkins安裝 jenkins官網位址為: https://jenkins.io/ ,下載下傳了最新的2.134版本,采用war的方式利用tomcat容器釋出:
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
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,根據提示擷取對應的檔案内容,輸入即可解鎖

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

解鎖jenkins

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

自定義jenkins,此處我選擇安裝推薦的插件

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

建立jenkins管理賬号

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

配置通路位址

以上過程配置完成之後,即可進入jenkins背景了,如下圖:

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
4、maven安裝配置

maven的官網下載下傳位址為:

http://maven.apache.org/download.cgi

,此處下載下傳的是zip檔案

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

将maven壓縮包解壓到/iyunwen/server下面,重命名為maven

5、jenkins內建git+maven+sonar配置 (1)插件配置

登入jenkins背景,找到系統管理---->插件管理---->可選插件

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

其中必選安裝的插件有git相關、maven相關、sonar相關,詳細清單如下:

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

安裝完成以後,可以在已安裝中檢視

(2)全局工具配置

jenkins中,系統管理--->全局工具配置   全局工具配置主要配置maven、git、sonar、jdk等的環境變量,非常重要,對于存有疑問的地方,可以點選每一個選項中的問号(?)會出現相關提示。

a、maven配置
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

此處maven安裝在/iyunwen/server/maven下面

b、jdk配置
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

jdk采用的jdk8,路徑為/iyunwen/server/jdk8

c、git配置
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

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的配置為

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
e、maven配置
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
(3)、系統設定

在jenkins中,系統管理---->系統配置中

a、maven項目記憶體配置
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇
b、sonar的server端資訊配置

sonar server的配置有2項,一個為server的位址資訊,一個為通信的token,如下圖

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

對于sonar的token生成方式,需要admin登入sonar,右上角--->我的賬号---->安全---->生成令牌,令牌的名字可以任意填寫,将生成的token填寫至jenkins server配置資訊中

6、開始建構項目進行代碼檢測

jenkins背景---->建立任務,如下圖

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

點選完成之後,進入配置界面,此處的配置需要額外注意,有一些特别需要注意的點,否則會出現問題

(1)源碼管理

指定項目的git位址

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

此處,如果git沒有安裝或者沒有将jenkins的使用者key檔案添加到git伺服器中,則會報以下錯誤

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

此處需要注意的點有:

a、生成key檔案添加git伺服器

由于jenkins使用的tomcat使用者啟動,是以添加到git服務中的Key檔案必須是tomcat的,如果添加的是root的key檔案,此處仍然有問題

centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

生成的key檔案在:/iyunwen/server/tomcat_jenkins//.ssh/id_rsa.pub,将id_rsa.pub添加到git伺服器的SSH檔案中即可

b、系統中存在git服務,并確定用tomcat使用者,可以git clone項目 (2)建構
centos搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

采用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搭建代碼代碼檢測平台(1):sonar+Jenkins+maven搭建篇

到此,centos搭建代碼代碼檢測平台:sonar+Jenkins+maven搭建篇已完成,後續章節我們将進入sonar代碼檢測的深度內建分析和插件使用方面