一、sonar和sonar-scanner的安装:
1. 下载sonar,地址https://www.sonarqube.org/downloads/
2. 下载sonar-scanner,wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
3. unzip上面的两个压缩包
4. sonarqube-6.7.6/bin/linux-x86-64目录下启动sonar,命令是sh sonar.sh console 默认访问端口9000.启动后访问地址http://ip:9000/可以出现sonar的首页,下载中文安装包(我这是已经装过了)
5. 为sonar配置数据库地址,自行安装mysql设置好库名用户名密码,此处不再赘述,然后修改sonar解压后文件中的配置,
conf下的sonar.properties文件,设置
sonar.jdbc.username=
sonar.jdbc.password=
sonar.jdbc.url=
sonar.web.javaOpts=(为了防止堆内存不够用可以适当加大一点)
sonar.web.host=0.0.0.0
sonar.web.port=9000
6. 设置后进入bin目录下重启sonar,sh sonar.sh start
此时发现进程起不来,退出了,查看logs目录下的sonar.log报错 [o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143
看网上资料说是es报错,查看es日志发现有一条 WARN es[][o.e.b.BootstrapChecks] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]。这里需要调整/etc/sysctl.conf文件,追加vm.max_map_count=262144然后执行sysctl -p使生效
接下来重新启动发现还是报错起不来,并且sonar.log和es.log都没有报错信息,于是看了下web.log报错如下Web server startup failed: Unsupported mysql version: 5.5. Minimal supported version is 5.6.,原来是我配置的mysql版本太低了,于是找了个5.6版本的mysql重新配置,至此可以成功启动
7. sonar-scanner安装只需要把sonar-scanner的bin目录加到环境变量path中即可
二、 Jenkins下配置sonarQube和sonar-scanner
1. 下载和启动Jenkins,非常简单,下载完Jenkins的war包,然后java -jar jenkins.war即可启动,默认端口8080
2. 进入Jenkins控制台,下载sonar和git对应的插件,我这边的是:
3. Jenkins的系统设置中添加SonarQube servers,配置路径和认证。
其中Server authentication token是在sonar中生成的,生成方法:admin登陆
4. Jenkins的全局路径中配置sonar-scanner的路径如下:
5. 然后就可以愉快的在Jenkins中添加job并且对其进行静态代码分析了。我的job的主要配置:
6. 配置完成job后,立即构建,理论上就可以构建成功,并且Jenkins出现可以链接过去的分析结果像酱紫
链接过去大概是酱紫:
但怎么会这么顺利呢,我这边构建出现的问题汇总如下,下面对应Jenkins日志报的错和解决方法
1. Caused by: java.io.IOException: Cannot run program "git" (in directory "/home/devs/.jenkins/workspace/itsm-sonar"): error=2, 没有那个文件或目录
很明显,这是因为装Jenkins那台机器没有安装git,装一下即可
2. Caused by: Not authorized. Please check the properties sonar.login and sonar.password.
这是因为在Jenkins的 analysis properties没有配置sonar.login and sonar.password. 加上就好
3. Caused by: You must define the following mandatory properties for 'itsm': sonar.sources
啊这个是最坑的,在网上搜都说analysis properties信息不全或者少什么properties文件来着。。结果各种尝试都没用,最后发现analysis properties是sonar.sources前面多了一个空格。。。想骂人有没有。。
OK。。至此介绍完毕