标题很长,其实最后的结果就是jenkins集成了sonar,scanner,svn并分布式的在不同的节点服务上build。
需求:1.实现代码扫描;2.jenkins集成sonar并自动扫描svn上的更新的代码;3.如果更新代码较多,出现排队,那么需要并发扫描,也就是配置jenkins节点。
疑问:当时出现的疑问就是我的sonar服务可以配置多个,但是scanner他的配置是服务器的相对路径,如何在slave节点服务器上也使用我的全局变量。
解决办法:既然不知道节点的scanner如何配置,那么索性我的master(服务器端jenkins)配置全局变量时选择自动安装,不填写相对路径,在一次次构建失败中分析
环境说明:linux,jenkins放到Tomcat中,sonarqube,sonarqube scanner。数据库mysql在另外一台服务器上。
PS:我有一篇是关于本地Windows版的集成,其实和linux差不多,相对而言linux在配置数据库方面都没有出现问题,反而更简单了。可以参照一下。
下面罗列一下步骤:
1.jenkins配置sonarqube server
2.jenkins配置SVN,JDK
3.jenkins配置sonarqube scanner
4.jenkins配置节点
5.修改节点的scanner的配置文件
==============================
1.jenkins配置sonarqube server
路径:系统管理-系统设置-SonarQube servers
2.jenkins配置SVN,JDK
路径:系统管理-全局工具配置-JDK
PS:最初选择的是相对路径,但是在节点中的路径不对,导致jdk无法运行,所以此处要选择自动安装
SVN在具体的项目中配置即可,对应的svn地址并添加用户和密码
3.jenkins配置sonarqube scanner
路径:系统管理-全局工具配置-SonarQube Scanner
PS:此处也选择自动安装,要不然节点服务器找不到对应的scanner
4.jenkins配置节点
节点服务器出现connnected说明成功。
5.修改节点的scanner的配置文件
在job中修改需要运行的节点服务标签。
此时就可以构建一次,当然会失败的,因为咱们的scanner的配置文件没有更改,然后节点服务器会同步master上的配置,你会发现在节点的工作目录中出现如下文件
重要:修改C:\jenkins\tools\hudson.plugins.sonar.SonarRunnerInstallation\SonarQube_Scanner\conf的sonar-scanner.properties配置文件,需要指定sonar服务和相应的数据库。
再次构建,你会发现已经成功,至此jenkins上的节点服务已经将扫描结果传给了sonar服务器。