sonarqube安装配置_SonarQube安装及配置(代码质量管理平台)

一、SonarQube简介

Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar可以集成不同的测试工具,代码分析工具, 以及持续集成工具。 比如pmd-cpd、checkstyle、findbugs、Jenkins。 通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。

此外,Sonar 的插件还可以对 Java 以外的其他编程语言(支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex等)提供支持, 对国际化以及报告文档化也有良好的支持。 可以说Sonar是目前最强大的代码质量管理工具之一。

SonarQube和SonarQube Runner之间的关系。SonarQube是服务器端,它主要有两个功能:1.分析源代码;2.因为它内嵌了Apache模块,所以提供Web端的界面访问。SonarQube Runner是一个利用SonarQube服务端分析代码的命令行工具,可以把它简单理解为客户端。

二、SonarQube安装

1、数据库配置

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;Query OK, 1 row affected (0.11 sec)mysql> CREATE USER 'sonar' IDENTIFIED BY '*****';Query OK, 0 rows affected (0.02 sec)mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY '*****';Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY '******';Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.03 sec)mysql> qBye

2、配置sonar

[root@vm1 ~]# wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.3.zip[root@vm1 ~]# mv sonarqube-6.7.3.zip /usr/local/[root@vm1 ~]# cd /usr/local/[root@vm1 local]# unzip sonarqube-6.7.3.zip[root@vm1 local]# ln -s sonarqube-6.7.3 sonar[root@vm1 ~]# cd /usr/local/sonar/conf/[root@vm1 conf]# vim sonar.properties [root@vm1 conf]# grep -Pv "^(#|$)" sonar.propertiessonar.jdbc.username=sonarsonar.jdbc.password=*****sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=falsesonar.web.host=0.0.0.0sonar.web.port=9000

Sonar-scanner 下载址:

wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.1.0.1141-linux.zip

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

https://docs.sonarqube.org/display/SCAN

2、配置SonarQube Runner

下载地址:http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip

[root@vm1 ~]# mv sonar-runner-dist-2.4.zip /usr/local/[root@vm1 ~]# cd /usr/local/[root@vm1 local]# unzip sonar-runner-dist-2.4.zip Archive: sonar-runner-dist-2.4.zip creating: sonar-runner-2.4/ creating: sonar-runner-2.4/bin/ inflating: sonar-runner-2.4/bin/sonar-runner.bat  inflating: sonar-runner-2.4/bin/sonar-runner  creating: sonar-runner-2.4/conf/ inflating: sonar-runner-2.4/conf/sonar-runner.properties  creating: sonar-runner-2.4/lib/ extracting: sonar-runner-2.4/lib/sonar-runner-dist-2.4.jar [root@vm1 local]# ln -s ln -s sonar-runner-2.4 sonar-runner[root@vm1 local]# cd sonar-runner/conf/[root@vm1 conf]# vim sonar-runner.properties [root@vm1 conf]# grep -Pv "^(#|$)" sonar-runner.propertiessonar.host.url=http://localhost:9000sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8sonar.jdbc.username=sonarsonar.jdbc.password=*****sonar.login=adminsonar.password=admin[root@vm1 conf]#[root@vm1 ~]# vim /etc/profileJAVA_HOME=/usr/java/latestexport JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport TIME_STYLE='+%Y/%m/%d %H:%M:%S'export SONAR_HOME=/usr/local/sonarexport SONAR_RUNNER_HOME=/usr/local/sonar-runnerPATH=$SONAR_HOME/bin:$SONAR_RUNNER_HOME/bin:$JAVA_HOME/bin:$PATHexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME[root@vm1 conf]# source /etc/profile

3、启动SonarQube

用root无法启动lSonarQube,需要另外新建普通用户来启动

[root@vm1 sonar]# useradd esadmin[root@vm1 sonar]# cd ..[root@vm1 local]# chown -R esadmin.esadmin sonarqube-6.7.3[root@vm1 local]# vim sonar/elasticsearch/config/elasticsearch.yml[root@vm1 local]# grep -Pv "^(#|$)" sonar/elasticsearch/config/elasticsearch.yml network.host: 192.168.60.119http.port: 9200[root@vm1 local]#[root@vm1 local]# su esadmin[esadmin@vm1 local]$ cd sonar[esadmin@vm1 sonar]$ bin/linux-x86-64/sonar.sh start[esadmin@vm1 sonar]$ tail -f logs/sonar.log 2018.05.21 19:51:06 INFO app[][o.s.a.SchedulerImpl] Process[es] is up2018.05.21 19:51:06 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/usr/local/sonarqube-6.7.3]: /usr/java/jdk1.8.0_172-amd64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/usr/local/sonarqube-6.7.3/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server/*:/usr/local/sonarqube-6.7.3/lib/jdbc/mysql/mysql-connector-java-5.1.42.jar org.sonar.server.app.WebServer /usr/local/sonarqube-6.7.3/temp/sq-process6994721675375568509properties2018.05.21 19:51:38 INFO app[][o.s.a.SchedulerImpl] Process[web] is up2018.05.21 19:51:38 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [/usr/local/sonarqube-6.7.3]: /usr/java/jdk1.8.0_172-amd64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/usr/local/sonarqube-6.7.3/temp -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server/*:./lib/ce/*:/usr/local/sonarqube-6.7.3/lib/jdbc/mysql/mysql-connector-java-5.1.42.jar org.sonar.ce.app.CeServer /usr/local/sonarqube-6.7.3/temp/sq-process5555492575408452898properties2018.05.21 19:51:54 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up2018.05.21 19:51:54 INFO app[][o.s.a.SchedulerImpl] SonarQube is up[esadmin@vm1 sonar]$ lsof -i:9000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEjava 22595 esadmin 116u IPv6 105980 0t0 TCP *:cslistener (LISTEN)[esadmin@vm1 sonar]$[root@vm1 local]# firewall-cmd --zone=public --add-port=9000/tcp --permanent success[root@vm1 local]# firewall-cmd --reload success[root@vm1 local]#

4、使用浏览器就可以直接登陆

在浏览器地址栏输入: http://sonarqube_server_ip:9000/

c044d72c5459f0928dee712e121a02ab.png

5、SonarQube与maven结合

maven的setting.xml 配置如下:

 org.sonarsource.scanner.mavensonar  true   http://192.168.40.119:9000  ...... 

mvn sonar:soanr

6、SonarQube与Jenkins配合

方法1:Jenkins -->调用maven --> 在maven的settings.xml文件中指定SonarQube的地址,最后在Jenkins 项目构建时 使用 maven clean deploy sonar:sonar 参数,如下图所示:

69f4cf3050896d34fe8d72f6608506d1.png

方法2: 在Jenkins中下载sonar插件,目前插件为 SonarQube Scanner for Jenkins。安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息,如下所示:

a9ca50e56bf2c62d4f6b6282452221a5.png

上图中的token 是从SonarQube复制并粘贴过来的,如下所示:

2d73313ac6d32f0503d59f28ae77493b.png

在项目的根目录下添加文件sonar-project.properties 文件参考:

# must be unique in a given SonarQube instancesonar.projectKey=my:project# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.sonar.projectName=My projectsonar.projectVersion=1.0# Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.# This property is optional if sonar.modules is set. sonar.sources=.# Encoding of the source code. Default is default system encodingsonar.sourceEncoding=UTF-8# The value of the property must be the key of the language.sonar.language=java# Additional parameterssonar.my.property=valuesonar-scannerexport SONAR_SCANNER_OPTS="-Xmx512m"

SonarLint相当于sonar的一个插件,它及时反馈给开发人员新的bug和质量问题。是常用IDE的一个扩展。如Eclipse、VS、IntelliJIDEA。

wget -c http://repo1.maven.org/maven2/org/codehaus/sonar-plugins/l10n/sonar-l10n-zh-plugin/1.8/sonar-l10n-zh-plugin-1.8.jar[esadmin@vm1 source]$ git clone https://github.com/SonarSource/sonar-scanning-examples.git[esadmin@vm1 source]$ cd sonar-scanning-examples/sonarqube-scanner[esadmin@vm1 sonarqube-scanner]$ lscopybooks coverage-report sonar-project.properties src[esadmin@vm1 sonarqube-scanner]$ /usr/local/sonar-scanner/bin/sonar-scanner

总结:其中注意的地方:

(1)安装sonar以前必须,安装好jdk和 mysql数据库。

(2)jdk的版本影响着sonar版本,所以下载的时候需要注意(Sonar5.6以上版本需要JDK1.8)

(3)注意配置文件中配置信息要求。注意有三个配置文件需要去配置一下,sonar.properties,配置文件主要是配置数据库信息。因为,sonar产生的报告信息, 是存储在数据库中的。

sonar-scanner.properties,配置文件,主要是关联服务器sonar和数据库信息。第三个配置文件任然是上面这一样的名字,是配置在项目中的配置文件。管理项目和客户端的连接。

(4)那就是用到的命令、启动sonar服务器我们直接在bin启动就可以了,需要注意的命令。验证客户端是否安装成功sonar-scanner -version 然后就是我们主要的命令。sonar-scanner 用来加载项目进入服务器sonar中。

(5)一个 输入URL http://localhost:9000

三、补充sonarqube-7.3

[root@nexus ~]# cd /usr/local/src/[root@nexus src]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.3.zip[root@nexus src]# unzip sonarqube-7.3.zip[root@nexus src]# ln -s sonarqube-7.3 sonarqube[root@nexus src]# grep sonar /etc/passwdsonar:x:1021:1022::/home/sonar:/bin/bash[root@nexus src]# chown -R sonar.sonar sonarqube-7.3[root@nexus src]# cd sonarqube/conf[root@nexus conf]# vim sonar.properties[root@nexus conf]# grep -Pv "^($|#|;)" sonar.propertiessonar.jdbc.username=sonarsonar.jdbc.password=sonarsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=falsesonar.web.port=10000 #默认9000,由于本机9000已被占用 本例改为10000[root@nexus conf]# mysql -usonar -psonar sonar -hlocalhost #测试连接mysql的username、password、dbName ;sonar7.3 要求 MySQL >=5.6 && <8.0[root@nexus conf]# ln -s /usr/local/src/sonarqube-7.3/bin/linux-x86-64/sonar.sh /etc/init.d/sonar[root@nexus conf]# vim /etc/init.d/sonar[root@nexus conf]# grep -A 2 RUN_AS_USER=sonar /etc/init.d/sonarRUN_AS_USER=sonarLimitNOFILE=65536LimitNPROC=2048[root@nexus conf]# (添加以上三行)[root@nexus conf]# grep SONAR_HOME /etc/profileexport SONAR_HOME=/usr/local/src/sonarqubeexport PATH=$PATH:$SONAR_HOME[root@nexus conf]#[root@nexus conf]# service sonar start[root@nexus conf]# lsof -i:10000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEjava 18831 sonar 116u IPv4 1429389507 0t0 TCP *:ndmp (LISTEN)[root@nexus conf]#[root@nexus conf]# cd /etc/nginx/conf.d[root@nexus conf.d]# cat sonar.confupstream sonar-node { server 127.0.0.1:10000;}server { listen 80; server_name sonar.2dupay.com; access_log /var/log/nginx/sonar/access.log; error_log /var/log/nginx/sonar/error.log; location / { proxy_pass http://sonar-node; } allow 192.168.20.0/24; deny all;}[root@nexus conf.d]# nginx -s reload
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值