大家好,我是烤鸭:
今天分享一个代码检测工具sonar,在jenkins集成的时候使用。
环境:
sonarqube 7.1
jenkins 2.12x
sonarqube scanner (官网最新版3.2.0.1227)
1. jenkins svn/git 搭建项目
https://blog.csdn.net/Angry_Mills/article/details/78539826
2. sonarqube 安装
2.1 下载 SonarQube 7.1
https://www.sonarqube.org/downloads/
2.2 解压
mkdir sonar
cd sonar
upzip sonarqube-7.1
2.3 修改配置文件
官方文档 : https://docs.sonarqube.org/display/SONAR/Installing+the+Server
修改后的配置文件如下:
配置了mysql和修改了启动端口和es端口。注意mysql必须是5.6+。
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=root
sonar.jdbc.password=root123
#----- MySQL 5.6 or greater
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
# Web context. When set, it must start with forward slash (for example /sonarqube).
# TCP port for incoming HTTP connections. Default value is 9000.
sonar.web.port=9202
# Elasticsearch port. Default is 9001. Use 0 to get a free port.
# As a security precaution, should be blocked by a firewall and not exposed to the Internet.
sonar.search.port=9010
2.4 启动
cd /opt/sonar/sonarqube-7.1/bin/linux-x86-64
./sonar.sh start
2.5 启动失败原因
2.5.1 es.log
最开始是es.log中的这个
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
由于sonar的启动需要同时启动es和web,所以需要检查这里es.log和web.log,加上sonar.log。
上面这个异常是es的启动时候的,切换非root用户启动就可以了。
#创建用户组es
groupadd es
#创建用户组es下的用户es
useradd es -g es
#某个文件夹的权限给es用户组和es用户
chown -R es:es /opt/sonar/sonarqube-7.1/bin/linux-x86-64
#切换用户
su -es
关于更多es的异常,请看这个 elasticsearch 6.x (二) linux部署 kibana x-pack 安装
2.5.2 web.log
java.lang.IllegalStateException: Fail to execute ES search request 'SearchRequest xxx on indices '[issues]' on types '[issue]
我是删除了temp目录和data/es5目录下的全部。执行restart命令。
java.net.BindException: Address already in use
每次启动前先检查sonar是否停止,有时候命令停不下来,需要执行kill -9命令。
2.5 访问
上一张访问成功的图:
2.5 下载汉化插件和修改密码
我这里已经安装过插件了。
修改密码
3. sonarqube scanner 安装
sonarqube scanner下载地址 https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
下载、解压缩跟同上。
可以修改配置文件,指定sonarqube的地址,源码地址等等。
如果是和jenkins svn集成,这里什么都不需要更改。在集成设置配置,每个项目独立配置就好了。
4. 与jenkins集成
4.1 安装sonarqube插件
SonarQube Scanner for Jenkins
Sonargraph Integration Jenkins Plugin(暂时没用上)
Quality Gates Plugin(暂时没用上)
4.2 配置sonarqube服务器
token在修改密码那个页面生成:
4.3 修改jenkins集成配置
sources:最开始我写的是src/main/java
Caused by: The folder 'src/mian/java' does not exist for 'mytest' (base directory = /root/.hudson/workspace/mytest)
然后我去上面的目录下看了一下,发现我外层还有一个web,修改sources和binaries就好了。
4.4 集成成功
多了个图标,可以链接到sonarqube,不过很慢,直接登录系统看就好了。
4.5 在sonarqube查看项目