一、Sonarqube安装
1、阿里yum源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2、Java环境安装
yum install lrzsz vim -y
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
java -version
3、sonarqube软件包及中文包下载,这里下载7.3的版本,八点多的版本需要jdk11了,先不用了。
https://binaries.sonarsource.com/Distribution/sonarqube/
https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases 放到:extensions/plugins/
4、安装
unzip sonarqube-7.3.zip -d /usr/local/
cp sonar-l10n-zh-plugin-1.23.jar /usr/local/sonarqube-7.3/extensions/plugins/
useradd sonar
chown -R sonar:sonar /usr/local/sonarqube*
5、配置数据库,先安装一个mysql,可以参考前面的Centos7 Zabbix4.0.3安装中mysql的安装
登陆mysql,创建一个sonar数据库,这个数据库在sonarqube的配置sonar.jdbc.url中需要用到
mysql -uroot -h 127.0.0.1 -p123456
create database sonar;
6、修改sonarqube数据库配置,使用前面创建的数据库及账号密码,如果mysql安装在其他机器上则使用机器ip,并且mysql需要允许其他机器连接mysql 允许其他机器连接。如果没有修改的话默认使用内嵌的数据库。
vim /usr/local/sonarqube-7.3/conf/sonar.properties
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerfo
rmance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=123456
7、启动sonarqube,sonar不能用root启动,需要用普通用户
su - sonar
sh /usr/local/sonarqube-7.3/bin/linux-x86-64/sonar.sh start
8、访问sonar,网页端口9000,默认用户名密码admin
9、在(配置–通用设置–权限),开启强制认证
10、禁用SCM传感器,点击 配置—SCM—Disable the SCM Sensor 将其关闭。
11、admin用户的权限配置:开启执行分析权限
二、sonarscan手动扫描代码
1、sonarscanner安装
下载地址
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
解压
unzip sonar-scanner-cli-4.2.0.1873-linux.zip -d /usr/local/
2、配置sonar-scanner.properties
vim /usr/local/sonar-scanner-4.2.0.1873-linux/conf/sonar-scanner.properties
sonar.host.url=http://localhost:9000
3、设置环境变量
vim /etc/profile
export SONAR_RUNNER_HOME=/usr/local/sonar-scanner-4.2.0.1873-linux
export PATH=$SONAR_RUNNER_HOME/bin:$PATH
source /etc/profile
sonar-scanner --version
4、创建一个文件夹存放代码
mkdir -pv /soft/python/
5、编辑一个python文件,print没加引号,测试是否能检测出错误
vim /soft/python/sonar_scannertest.py
print wangxiaoyu
6、配置 sonar项目检查的配置文件,在执行sonar-scanner扫描时会去寻找这个文件,需要配置一个sonar项目的key和name,以及代码目录,还有sonar的账号密码
vim /soft/sonar-project.properties
sonar.projectKey=wangxiaoyu
sonar.projectName=wangxiaoyu
sonar.projectVersion=1.0
sonar.sources=/soft/python
sonar.login=admin
sonar.password=admin
7、在sonar-project.properties那层目录下运行sonar-scanner命令,进行代码检查
cd /soft/
sonar-scanner
8、到sonarqube上查看,可以看到这个项目
并且代码问题有检查出来
三、jenkins+sonarqube自动扫描
1、jenkins服务器上需要安装sonar-scanner,如果没有装需要装一下,我这边都在同一台上了。jenkins需要安装插件SonarQube Scanner for Jenkins。
2、Jenkins全局工具配置 sonarqube scanner
name sonarscan
SONAR_RUNNER_HOME /usr/local/sonar-scanner-4.2.0.1873-linux
3、Jenkins系统配置sonar
系统管理 -> 系统配置 -> 配置SonarQube servers
4、Jenkins项目扫描设置Analysis properties,这里使用前面的gitlabansible这个项目。
在执行ansible构建步骤之前增加一个sonarqube scanner构建步骤
Analysis properties 设置snoar任务key和name,以及登陆的账号密码,可以使用token,下面会说
sonar.projectKey=gitlabansible
sonar.projectName=gitlabansible
sonar.projectVersion=1.0
sonar.sources=.
sonar.login=admin
sonar.password=admin
Additional arguments -X
5、然后进行jenkins构建,查看sonarqube界面,可以看到有上面设置的gitlabansible这个任务。
6、Jenkins使用token方式访问sonarqube
在sonarqube用户设置安全中,选择生成一个令牌,复制生成的token
f6ff3b6ff817e526e8c9d35ee52096faab01dcd1
在jenkins的 系统管理 -> 系统配置 -> 配置SonarQube servers,添加一下这个secret text类型的token
在jenkins项目中,重新设置一下Analysis properties,取消账号密码的设置
sonar.projectKey=gitlabansible
sonar.projectName=gitlabansible
sonar.projectVersion=1.0
sonar.sources=.
然后再执行一下构建,可以构建成功,说明sonarqube生成的token配置在jenkins中是有效的