Jenkins集成**SonarQube详细安装及配置**
\1. 环境
<1>.前置条件:jdk1.8,mysql >=5.6 && <8.0
<2>.系统:centos7.2-x86_64
<3>.软件下载目录:/home/sonar/
<4>.软件安装目录:/home/sonar/
<5>.Sonarqube版本:SonarQube7.6(最新版本不支持mysql,但支持oracle、postgreSQL9.3、6.SQLServer2014/2016/2017,综合考量后,决定用SonarQube7.6)
<6>.sonarqube下载地址:https://www.sonarqube.org/downloads/(拉下页面最底部有个Historical Downloads可选择版本进行下载)
<7>.Sonar-scanner下载扫描器地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
\2. 安装环境
<1>安装mysql数据库,需要记住安装时Mysql数据库的的账号密码;
<2>安装好相关的Mysql后,需要在数据库中创建一个数据库,命名为sonar(因已有同事安装好mysql,只需要建库就可以):
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
<3>创建一个sonar用户,设置用户名账号密码为sonar:
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
<4>把已创建的数据库sonar的所有权限赋予给sonar用户:
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
<5>安装SonarQube
第一步:将下载的sonarqube-7.6.zip进行解压
unzip sonarqube-6.7.5.zip 解压包
第二部:配置环境变量
第三步:配置sonar.properties
打开属性文件后,找到mysql配置处,加入如下圈红代码
代码解析:
第一行sonar.jdbc.url: 链接myslq数据库地址,数据库名。sonar问号后面是格式相关;
第二/三行: mysql的账号/密码;
第四行: 支持的编码格式;
第五/六行: sonar登录时的账号密码;默认就是admin
6.启动SonarQube (重点,这块有点坑了)
SonarQube 启动不能用root启动,所以新建一个用户。必须先启动elasticsearch,才能再启动sonar。sonar文件目录里面有elasticsearch这个目录。
启动的时候会报错,这里面有报错的资料。
https://blog.csdn.net/u012448904/article/details/81624037
[root@jenkins /]# useradd sonar
[root@jenkins /]# chown -R sonar:sonar sonarqube-7.6
[root@jenkins /]# chmod 777 -R sonarqube-7.6
[root@jenkins /]# vi sonarqube-7.6/elasticsearch/config/elasticsearch.yml
//开启端口和指定服务
Network.host:192.168.0.1
http.prot:9200
进行用户切换,进行启动sonar
使用sonarqube 地址进行登录,出现如下界面,Sonarqube启动成功
\7. 安装sonar-scanner和配置
第一步:将下载的sonar-scanner-cli-4.2.0.1873-linux.zip进行解压后移动到/usr/local目录下并重命名为“sonar-scanner”
unzip sonar-scanner-cli-4.2.0.1873-
linux.zip 解压包
第二步:配置环境变量
第三步:source /etc/profile 保存编辑内容
第四步:编辑vi sonar-scanner.properties文件,加入如下代码,并保存,相关数据库url帐号密码请根据系统本身情况填写
第五步:进入项目根目录下,添加sonar-project.properties文件,参数如下:
//与项目名称一样即可(必填项)
Sonar.projectKey=demo
//与项目名称一样即可(必填项)
Sonar.projectName=demo
需要分析的源码目录,相对路径(必填项)
Sonar.sources=src/main
//编译后的classes目录,相对路径(必填项)
Sonar.jva.binaries-build/calsses
Sonar.sourceEncoding=UTF-8
启动扫描项目:sonar-scanner,并有如下字样表明扫描启动成功
打开http://localhost:9000/,能看到主页出现了分析项目的概要图
\8. Jenkins集成Sonarr插件
<1>.在Jenkins中下载sonar插件,目前插件为 SonarQube Scanner for Jenkins
<2>.插件安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息:
其中认证token需要登陆sonarqube后,点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成,再把生成的generate内容复制,填入jenkins添加凭据。
<3>.在系统设置-全局工具配置中,找到SonarQube Scanner模块,填写相关信息:
\9. 在jenkins中新建一个自由风格项目
<1>.源码管理这里选择svn或者git都可以,我这里是选择的svn
<2>.执行代码分析,新增一个构建步骤,选择Execute SonarQube Scanner
<3>.在Analysis properties处,输入sonarqube的检查参数
参数说明:
#项目key (与项目名称一样即可,必填项)
sonar.projectKey=
#项目名称和版本(必填项)
sonar.projectName=
sonar.projectVersion=1.0
#源码位置(必填项,相对于jenkins的workspace路径,相对路径)
sonar.sources=/opt/data/jenkins/workspace/..../..../src/main/java/
#编译后的class位置(必填项,相对路径同上)
sonar.java.binaries=/opt/data/jenkins/workspace/..../..../build/classes
配置完成后,点击构建。构建成功后即可在sonar地址中登陆访问进行查看代码扫描情况
\10. 在jenkins中新建一个流水线任务(Pipeline)
<1>.在流水线模块处,编辑Pipeline script:
Sonar.project.properties文件参数可以在脚本中直接加入,也可以放在项目根目录下,进行调用
-Dsonar.projectKey=${projectKey} -Dsonar.projectName=${projectName} -Dsonar.projectVersion=${projectVersion} -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=${sources} -Dsonar.java.binaries=${binaries}
<2>.配置完成后,点击构建。构建成功后即可在sonar地址中登陆访问进行查看代码扫描情况