1.本项目采用sonar的6.7.1版本,由于sonar不同版本的rest接口差异性比较大,请不要随意变更版本。(7开头版本不支持mysql,请安装postgresql)
2.请记录好sonar管理员账号密码,后续需要配置,一般使用admin账号
目前开发测试环境sonar http://10.86.42.196:9000 admin admin123
预发布环境:http://10.86.130.11:9000 admin admin123
3.sonar的安装启动最好不要用root账号,最好新建一个用户进行操作,不然会报权限问题
1.打开sonar目录下的sonar.properties文件,添加sonar的数据库信息
sonar.jdbc.username=sonar
sonar.jdbc.password=*******
sonar.jdbc.url=jdbc:mysql://10.12.14.22:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
2.同时,打开 sonar的sso登录,这样后续我们就可以通过header添加信息实现免登录
sonar.web.sso.enable=true
在联网情况下,从
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
下载sonar-scanner,解压到对应目录
1.进入Jenkins的配置中心-插件管理,安装sonar-scanner的插件
正在上传…重新上传取消
2.进入Jenkins的系统管理-系统设置,进行配置sonar配置
正在上传…重新上传取消
其中高版本的sonar需要填入tokens,我们可以登录sonar,进入我的账号,填入口令,直接生成token,将生成的token填入jenkins配置即可
正在上传…重新上传取消
3.进入Jenkins的系统管理-全局工具配置,进行配置sonar-scanner配置,填入sonar-scanner的安装目录即可
正在上传…重新上传取消
4.由于我们采用的是pipeline的方式进行代码检查,我们需要等待sonar检查完毕,调用waitForQualityGate()方法进行等待回调,因此,我们需要在sonar中填写Jenkins的回调地址,登录进入sonarQube,找到web-hook,填写Jenkins的回调地址,后续安装只需在此基础上修改ip和即可。
转存失败重新上传取消
安装nginx,配置sonar的请求路径,通过拦截url中的ticket,然后在header添加login信息实现sonar免登录
server{
listen 10000;
server_name 10.86.42.196 127.0.0.1 localhost;
location /{
proxy_set_header X-Forwarded-Login "$arg_ticket";
proxy_set_header X-Forwarded-Name "$arg_ticket";
proxy_pass http://10.86.42.196:9000;
}
}