前置条件:JDK+SQL
这里想说下,官方的介绍说明还是要好好看看的,不同版本的sonarqube所需要的前置条件和数据库支持也不同,比如7.9.1新版本已经不支持MySQL了,并且JDK最低要求11。
sonarQube7.9.1 JDK11 不支持MySQL
sonarQube7.5 JDK8 支持MySQL等
官方介绍戳这里
关注下这些就OK,看好对应的JDK版本和支持的数据库,选个自己喜欢的吧。
下面拿sonarQube7.5+JDK1.8.0_221+postgreSQL举例
JDK
JDK1.8.0_221
JDK11.0.1
直接点没准会需要登录oracle,这里右键直接可以拽到资源URL下载(???好想吐槽下这个地方 ?)
下载好拽到linux系统下面,解压即可,这里我放在了/usr/local/jdk/下面(放哪无所谓啦,环境变量配置对路径就好了,建议大家也把自己装的软件统一放在某个地方,方便管理~)
tar zxvf jdk-8u221-linux-x64.tar.gz
解压即可vim /etc/profile
配置环境变量,此文件末尾加上下面三行
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_221 #这里看你解压的是什么版本了,11的话应该是叫jdk-11.0.1,注意路径是你自己存放的位置哦 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
wq保存退出后,用source命令使环境变量生效java -version
检查下
OK,JDK弄好了,这里的坑可能就是配环境变量的路径别搞错了,你是啥版本目录叫啥名就填啥。当然还会有坑后面说
PostgreSQL
数据库这里我用的是PostgresSQL,主要是因为以前老机器就是这个,而且最新版本以及不支持MySQL了,MySQL就没弄
我只安装过两个系统 CentOS7 和 Debian8
Debian 8apt-get install postgresql postgresql-client
(嗯一键安装即可 ?)
CentOS7
yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
yum install postgresql95-server postgresql95-contrib
//这个具体记不清了,我copy过来的哈哈,反正也是一键安装吧
主要说配置文件跟配置数据库吧
配置文件
首先需要改pg_hba.conf这个配置文件,不知道为啥我Debian装完后路径跟网上的不一样
索性就自己用locate pg_hba.conf
搜一下吧,然后vim pg_hba.conf
进去
数据库
安装完后会自动创建postgres用户 su - postgres
切换进去psql
进入命令行模式create database sonar;
创建sonar数据库create user sonar;
创建sonar用户atler user sonar with password 'postgres';
设置sonar用户密码(否则会导致连不上数据库)alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;
给sonar授权alter database sonar owner to sonar;
更改sonar数据库拥有者(这一步是必须的,否则会sonarqube会连接失败)
到这里数据库就搞完了!检查一下,结果应该是这样的, psql进入命令行模式 \l查看数据库 \du 查看用户
SonarQube
官方文档:https://docs.sonarqube.org/7.5/
官方下载:https://www.sonarqube.org/downloads/
下载
老版本可以到这里找,这里我下载的是sonarQube7.5社区版
下载好丢到你的linux机器上,到/usr/local/下面解压 unzip sonarqube-7.5.zip
解压好之后其实就能起了,但是起服一定要注意三个坑!!!(这几个当时坑的我差点一口老血喷出来 ?)
- 不能用root起!
- 切换用户必须
su - username
!如果你这样做su username
在这个用户下JDK可能会不生效!(起码Debian是这样) - 切换好用户千万别忘记给这个用户授权你的sonarQube根目录
- 更改一些系统配置
更改系统配置 (这段是我ctrl+c ctrl+v搬过来的 ?)
根据需要执行下述命令以使内核参数符合sonar安装需求
#可以使用以下命令查看这些值:
sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
#可以通过以root身份运行以下命令来为当前会话动态设置它们:
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
#为了更永久设置这些值,则必须修改/etc/sysctl.d/99-sonarqube.conf(或/etc/sysctl.conf文件)#文件末尾添加下述两行
vi /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536
#在/etc/profile文件末尾添加ulimit -n 65536
vi /etc/profile
ulimit -n 65536#保存后运行#source /etc/profile 使其生效
source /etc/profile
创建sonar用户
useradd sonar
passwd sonar
目录授权chown -R sonar:sonar /usr/local/sonarqube-7.5/
(路径填你自己的哦)
起服su - sonar
别忘了切用户
这里插一句 ,Debian系统切换用户后好像默认用户的shell不是bash shell,会导致方向键TAB键之类的失灵,如果遇到这种情况,切回root,使用这个命令usermod -s /usr/sbin/nologin username
将普通用户的shell改成bash即可
cd /usr/local/sonarQube7.5/bin/
进入bin目录sh sonar.sh start
或 bash sonar.sh start
(Debian 下是bash shell 所以用bash)
到这里正常情况就能起来了,但是还没连数据库。
设置sonarQube配置文件 连接数据库vim /usr/local/sonarQube7.5/conf/sonar.properties
配置自己机器的IP跟端口,保存退出即可cd /usr/local/sonarQube7.5/bin/
进入bin目录sh sonar.sh restart
或 bash sonar.sh restart
重启即可
sonar启动的时候出现Process exited with exit value [es]: 143
sonar启动的时候出现Process exited with exit value [es]: 143异常
百度google了很久,发现都是一样的,也可能是解决方法之一,我遇到的问题不一样解决方法如下:
查看 logs目录下的日志
一直盯着 es的日志 但死活找不到问题;
于是看了一眼 web.log就明白出错的问题了
浏览器访问sonarqube
Sonar-Scanner扫描器安装及使用方法
光弄SonarQube是没法扫描项目的,所以还需要装一下sonar-scanner
官方下载地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
丢到/usr/local/sonar-scanner/下面解压unzip sonar-scanner-cli-4.0.0.1744-linux.zip
cd sonar-scanner-4.0.0.1744-linux
vim conf/sonar-scanner.properties
改下配置
保存退出后,创建软连接,将sonar-scanner改为全局即可使用ln -s /usr/local/sonar-scaner/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner /usr/bin/sonar-scanner
使用方法
在项目的根目录下创建sonar-scanner的配置文件vim sonar-project.properties
sonar.projectKey=test-project
sonar.projectName=test-project #填你自己的项目名称
sonar.projectVersion=1.0
sonar.sources=./ #扫描资源的路径
sonar.language=c++ #指定语言
sonar.host.url=http://localhost:9000 #填你自己的sonarqube地址
sonar.sourceEncoding=UTF-8
保存退出sonar-scanner
终端输入命令进行扫描 进入web页面查看结果
Jenkins 集成 SonarQube Scanner
1. 安装Jenkins
下载安装包,这里我们下载war包
运行jenkins.war的方式有两种:
第一种:将其放到tomcat中运行(放到webapps目录下,启动tomcat)
第二种:直接执行 java -jar jenkins.war --httpPort=8080
https://jenkins.io/doc/pipeline/tour/getting-started/
这里我们选择第一种方式
启动tomcat(bin/startup.sh)以后访问 http://localhost:8080/jenkins/
至此,jenkins安装完成
2. 安装SonarQube Scanner插件
2.1. 安装插件
https://plugins.jenkins.io/sonar
重启jenkins
2.1. 配置SonarQube
首先,在SonarQube中生成一个Token(PS:用token代替输入用户名和密码)
然后,在Jenkins中配置连接sonarqube服务器的地址,这里用到的token就是刚才在sonarqube中创建的那个token
最后,配置全局工具配置
3. 创建任务
最最重要的是,配置SonarQube analysis properties
可以将其单独写到一个配置文件(sonar-project.properties)里面,也可以像这样每次都写一遍
sonar.projectKey=ks-cms-unicorn
sonar.projectName=ks-cms-unicorn
sonar.projectVersion=1.0
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE
其中,sonar.java.binaries属性至关重要,笔者也是试了好多次
相关文档在这里:
https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode
本例中,创建了两个任务,方法同上
可以看到,每次构建任务都会生成一次报告
这种方式比Maven那种方式要好很多,在实际的项目中多用此方式
3. 参考及文档
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins
4. 补充:SonarQube中文界面
首先,下载中文语言包 sonar-l10n-zh-plugin.jar
然后,将其放入sonar安装目录的 extensions/plugins 目录下
最后,重启SonarQube
https://search.maven.org/search?q=sonar-l10n-zh-plugin
最后再补充一个使用Maven方式与服务器同步报告的命令
IDEA配置sonar