Jenkins中配置SonarQube相关参数
系统管理-系统设置
- SonarQube servers
- QualityGates-Sonarqube
-
-
Quality Gates
全局工具配置
- SonarQubeScanner
Jenkins构建流程
- SVN拉取代码
- sonarScanner代码质量检测(包含单元测试覆盖率)
- maven编译打包
- 获取sonarScanner扫描结果
- 确认是否远程发布
前提
- sonarQube安装完成
- sonarScanner安装完成
- Jenkins安装完成(相关插件都安装并配置好了,详细可见Jenkins安装)
- SVN安装完成(地址:https://www.cnblogs.com/-mrl/p/8980244.html)
JenKins 创建一个Maven任务
- configuration配置
- gerneral基础配置可不做修改
- SVN代码仓
- 构建触发器,可根据需求选择定时构建等参数
- 构建环境,因为使用SonarQube Scanner进行代码检测的,所有选择这个
- Maven 打包
- Post Steps 配置sonar分析配置
- 根据项目Project Key 获取SonarQube分析结果,(SonarScanner是一个插件,用来扫描代码的,最终结果是提交到SonarQube服务器的数据库)
配置Jenkins处理结果:当SonarQube分析结果为FAILED,则标记此次Jenkins Job失败,结束构建 - Post-Build Actoins发布容器
发布到Tomcat容器
ssh发布到服务制定目录 ,此处可能要下载over ssh插件 - 点击保存,点击立即构建
问题
1:job构建运行时提示:ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Error when executing blame for file src/scripts/accountMgr/authMgr/authMgr.js at org.sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:102) at org.sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:59)
原因是没有配置sonar.scm.disabled,在项目配置文件sonar_project.properties中配置其值为true即可。如果此处不设置,SVN访问无权限;
sonar.scm.disabled=true
2:sonar-scanner扫描代码出错 SonarQube svn: E170001
问题原因:
sonar-runner发现了.svn文件,于是启动了自己的SVN插件,去访问SVN,但是又没有对应SVN路径的授权所以就报错。
问题解决:
1.打开sonarqube的控制台,使用admin登录后 ,在配置->SCM->菜单中,将Disabled the SCM Sensor设置为true
2.在svn页面,设置svn的用户名和密码。