本文基於已經構建好的jenkins自動化平臺,添加sonarqube質量檢測平臺,本文主要展現sonar環境安裝以及接入jenkins的操做(同一臺機器)html
jenkins自動化平臺搭建,請參考鏈接文章,http://www.javashuo.com/article/p-blsfnbqm-eb.html
java
sonarqube介紹mysql
SonarQube是一個開源平臺, 用於管理源代碼的質量,它不只是一個質量數據報告工具,更是代碼質量管理平臺。 它經過插件的形式來管理代碼,它支持的語言包括:Java,PHP,C#,C,Python等多種開發語言。 七個維度來檢測代碼質量 1.代碼標準 經過PMD,CheckStyle,Findbugs等代碼規則檢測工具規範代碼的編寫; 2.潛在的缺陷 經過PMD,CheckStyle,Findbugs等代碼規則檢測工具檢測出潛在的缺陷; 3.代碼複雜度分佈 文件、類、方法等,若是複雜度太高將難以改變,這使得開發熱女難以理解它們,且若是沒有自動化的單元測試, 對於程序中的任何組件的改變都將可能致使須要全面的迴歸測試; 4.重複 顯然程序中包含大量複製粘貼的代碼質量低下的,sonar能夠展現源碼中重複嚴重的地方; 5.註釋不足或者過多 沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變更時,程序的可讀性將大幅度降低; 6.單元測試 sonar能夠很方便地統計並展現單元測試覆蓋率; 7.架構規則 經過SonarQube能夠找出循環,展現包與包、類與類之間的相互依賴關係,能夠展現自定義的架構規則。 經過SonarQube能夠管理第三方的jar包,能夠利用LCOM4檢測單個任務規則的應用秦高,檢測耦合。
------------------------------linux
系統及應用環境
git
------------------------------
web
系統環境sql
[root@localhost jenkins]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修改內核參數 vim /etc/sysctl.conf 增長修改如下參數 vm.max_map_count=262144fs.file-max=65536 sysctl -p 配置生效 修改系統資源限制 vim /etc/security/limits.conf ,在末尾添加以下 sonarqube - nofile 65536 sonarqube - nproc 2048
jenkins git maven環境數據庫
[root@localhost jenkins]# git --version git version 1.8.3.1 [root@localhost jenkins]# mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /usr/local/apache-maven-3.3.9 Java version: 1.8.0_201, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix" [root@localhost ~]# rpm -qa|grep jenkins jenkins-2.171-1.1.noarch
java環境(sonar必須)apache
[root@localhost jenkins]# java -version openjdk version "1.8.0_201" OpenJDK Runtime Environment (build 1.8.0_201-b09) OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode) 若是沒有java環境,則執行下面命令安裝 yum install java-1.8.0-openjdk.x86_64 -y yum install java-1.8.0-openjdk*-y
mysql環境(sonar必須mysql5.6以上)
vim
[root@localhost ~]# mysql --version mysql Ver 14.14 Distrib 5.6.43, for Linux (x86_64) using EditLine wrapper mysql環境安裝 cd /home yum -y install autoconf wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-5.6.41-1.el7.x86_64.rpm-bundle.tar tar -xvf MySQL-5.6.43-1.el7.x86_64.rpm-bundle.tar yum install ./*.rpm systemctl start mysql 此時啓動後 mysql自動生成了root密碼,沒法登錄的 systemctl stop mysql 先中止 mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 免密碼方式啓動 mysql> use mysql; mysql> UPDATE user SET Password=PASSWORD('root') where USER='root'; 不執行flush privileges 退出 systemctl restart mysql 啓動 mysql -uroot -proot mysql> use mysql; mysql> select host,user,password from user; mysql> update user set password=password('123456') where user='root'; mysql> update user set host='%' where user='root' and host='localhost'; mysql> flush privileges; mysql> exit 而後就能夠用root 123456登錄了
建立sonar數據庫與鏈接賬號
mysql -uroot -p123456 CREATE DATABASE sonarqube_db CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL ON sonarqube_db.* TO 'sonarqube_user'@'localhost' IDENTIFIED BY '12345678'; FLUSH PRIVILEGES;
下載與部署SonarQube
cd /usr/local/
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
unzip sonarqube-6.7.6.zip
mv sonarqube-6.7.6 sonarqube
vim /etc/profile 增長環境變量
SONAR_HOME=/usr/local/sonarqube
export SONAR_HOME
source /etc/profile 執行生效
建立用戶組
groupadd sonarqube
useradd sonarqube -g sonarqube -p sonarqube
chown -R sonarqube.sonarqube /usr/local/sonarqube/
修改sonar配置文件
vim /usr/local/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonarqube_user
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube_db?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=0.0.0.0
sonar.web.port=9000
增長服務啓動腳本
vim /etc/init.d/sonar
#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.linuxhub.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.linuxhub.org)
# Description: SonarQube system (www.linuxhub.org)
### END INIT INFO
su sonarqube -lc "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh $*"
chmod 755 /etc/init.d/sonar 增長執行權限
/etc/init.d/sonar start 啓動sonar (必須是普通用戶才能啓動sonar,腳本中是sonarqube)
/etc/init.d/sonar stop 中止sonar
查看進程
[root@localhost ~]# netstat -lnupt |grep java
tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 33214/java
tcp6 0 0 :::9000 :::* LISTEN 33669/java
tcp6 0 0 127.0.0.1:9001 :::* LISTEN 33587/java
tcp6 0 0 127.0.0.1:32857 :::* LISTEN 33721/java
瀏覽器訪問
192.168.0.88:9000
默認帳號密碼 admin:admin 登錄後配置安裝中文插件包
sonarqube基本安裝完成,下面須要安裝sonar-scanner
-------------------------------------------------
下載安裝sonar-scanner
cd /usr/local/
unzip sonar-scanner-cli-3.3.0.1492-linux.zip
mv sonar-scanner-3.3.0.1492-linux sonar-scanner
修改配置文件
vim /usr/local/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
添加環境變量
export SONARRUNNER_HOME=/usr/local/sonar-scanner
export PATH=$SONARRUNNER_HOME/bin:$PATH
source /etc/profile
查看版本信息 sonar-scanner -v
[root@localhost ~]# sonar-scanner -v
INFO: Scanner configuration file: /usr/local/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 3.3.0.1492
INFO: Java 1.8.0_121 Oracle Corporation (64-bit)
INFO: Linux 3.10.0-327.el7.x86_64 amd64
登錄sonar界面調整配置
生成令牌,jenkins配置中要用
關閉SCM --保存
jenkins界面集成sonar
安裝sonar相關插件
安裝後重啓生效
而後系統管理--系統設置--配置sonarqube
系統管理---全局工具配置--sonar-scanner
而後調整項目的配置,增長sonarqube-scanner
配置
#key和name保持一致且在sonar下惟一 sonar.projectKey=$JOB_NAME sonar.projectName=$JOB_NAME #工程版本 sonar.projectVersion=1.0 #源代碼目錄 sonar.sources=$WORKSPACE #分析的語言 sonar.language=java #編碼sonar.sourceEncoding=UTF-8 sonar.java.binaries=$WORKSPACE
而後執行構建,第一次構建時間比較長
查看sonar報告
可參考文章:http://www.cnblogs.com/sunyllove/p/9857462.html https://blog.51cto.com/yanconggod/2096583 http://www.fblinux.com/?p=1155