Jenkins对接sonarqube

概述:

sonar是一个开源的代码质量分析检测平台,通过插件机制,能支持多种开发语言的代码质量检测,如java、php、ruby等,支持自定义代码扫描规则,同时sonar也支持对接常见的CI平台如Jenkins等,支持CI平台将代码重代码仓库拉取下来后直接调用sonar进行代码扫描,并将扫描结果进行汇总分类,汇制表图。

环境信息:

system:ubuntu:16.04
Jenkins:2.89.4
java:jdk1.8.161
rancher:2.0.2
kubernetes:1.10.1

sonar安装

sonar安装这里直接使用ranche2.0内置的应用商店安装的,当然你也可以通过其他方式安装

默认部署出来的访问是通过ingress,为了方便直接改成NodePort

部署成功
默认会部署4个pod另外两个test直接删了,留这两个sonarqube和sonar-postgresql就可以

通过hostip:nodeport方式访问sonar,比如我这里nodeport是31963

sonar配置

访问(默认帐号密码是admin/admin)


如果需要中文直接安装插件就好
administrator—->Marketplace
搜索Chinese—-安装


安装java语言插件

申请token
administrator—>security—>user—>token
保存生成token

Jenkins配置

安装插件
系统设置—>插件管理
安装SonarQube Scanner for Jenkins

配置
系统设置—>配置—>SonarQube servers

1
2
3
4
Name:SonarQube
Server URL :sonar-server
server authentication token : 刚刚sonar生成的token
Version of sonar-maven-plugin :5.3 or higher

配置Sonar-Scanner
sonar-Scanner用于Jenkins扫描可以选自动安装也可以手动选择应该安装好了的,将路径填上去。这里我们选自动安装
系统管理—>全局工具配置
配置JAVA_HOME

测试
freestyle

sudoers java路径
Jenkins创建freestyle

1
2
3
4
5
6
7
sonar.projectKey=Test #sonar那显示project-key
sonar.projectName=Test #sonar那显示project名字
sonar.projectVersion=1.0 ##sonar那显示project版本
sonar.sources=src
sonar.java.binaries=/var/lib/jenkins/workspace/piggymetrics/gateway/target/classes
sonar.language=java
sonar.sourceEncoding=UTF-8

执行构建

pipline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
node{
stage('git clone'){
//check CODE
git credentialsId: 'ab35a358-9743-4a65-afd2-58a56a3e8f29', url: 'http://172.31.164.58:1080/wanshaoyuan/piggymetrics-account-service.git'
}
stage('SonarQube analysis') {
def sonarqubeScannerHome = tool name: 'SonarQube Scanner'
withSonarQubeEnv('SonarQube') {
sh "${sonarqubeScannerHome}/bin/sonar-scanner"
}
}
}

pipline必须在对应的代码库的根目录创建sonar-project.properties
添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
sonar.projectKey=piggymetrics-auth-service:0.0.1
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=piggymetrics-auth-service
sonar.projectVersion=0.0.1
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=src
sonar.java.binaries=/var/lib/jenkins/workspace/piggymetrics-auth-service/target/classes
sonar.java.source=1.8
sonar.java.target=1.8
sonar.language=java
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

执行构建

最终在sonarQue看见

测试代码可以直接使用测试

1
https://github.com/sqshq/PiggyMetrics