欢迎大家来到IT世界,在知识的湖畔探索吧!
本文是使用SonarQube社区版进行验证。
注:Sonarqube Community 社区版是不支持多分区扫描的,可以安装开源插件实现。
社区版分支扫描,需安装开源插件,插件下载地址 https://github.com/mc1arke/sonarqube-community-branch-plugin
一、SonarQube Server 安装
参考文章:docker-compose快速部署SonarQube
二、SonarQube 插件、配置、创建项目
2.1、页面安装插件
修改为中文:SonarQube中文设定设定方法
2.2、手动安装插件
1、如果在SonarQube 管理页面无法搜索到插件,可以从https://binaries.sonarsource.com/Distribution/手动下载jar包。
2、下载完成后建jar包放到目录:/opt/sonarqube/extensions/plugins 下
3、重启SonarQube server 服务
java插件: https://binaries.sonarsource.com/Distribution/sonar-java-plugin/
2.3、配置
1、生产TOken administrator–>我的账户–>安全–>创建token
2、创建项目 右上角加号–>名称:test_java–>已有令牌–>创建成功
三、jenkins配置
3.1、安装插件
插件名:SonarQube Scanner for Jenkins
3.2、添加token认证
凭据–>全局凭据–>添加凭据–>Secret text Secret输入token ID输入:sonar_token
3.3、系统管理
系统管理–>系统配置–>SonarQube servers 添加Name:sonar #名称在pipeline代码credentialsId中会使用到 URL:http://192.168.10.230:9000/ 选择token:sonar_token
3.4、全局工具配置
新增SonarQube Scanner name: sonarscanner #名称在tool name 会使用到 版本: SonarQube Scanner 4.6.2.2472
四、pipeline代码
4.1、代码一
stage('代码质量分析'){
steps {
dir("code"){
script {
def scannerHome = tool name: 'sonarscanner'
}
withSonarQubeEnv(installationName: 'Sonar',credentialsId: 'sonar'){
sh "${scannerHome}/bin/sonar-scanner " +
"-Dsonar.branch.name=uat " +
"-Dsonar.projectKey=test_java " +
"-Dsonar.projectName=test_java " +
"-Dsonar.sourceEncoding=UTF-8 " +
"-Dsonar.language=java " +
"-Dsonar.projectVersion=1.0 " +
"-Dsonar.sources=. " +
"-Dsonar.java.binaries=."
}
}
}
}
欢迎大家来到IT世界,在知识的湖畔探索吧!
4.2、代码二
不使用jenkins凭证,直接在项目代码目录下执行命令
欢迎大家来到IT世界,在知识的湖畔探索吧!stage('代码质量分析'){
steps {
dir("code"){
script {
def scannerHome = tool name: 'sonarscanner'
sh "${scannerHome}/bin/sonar-scanner " +
"-Dsonar.host.url=http://192.168.10.230:9000 " +
"-Dsonar.login=51d1b2ce2a65834241220b7e748ce5c33d4220fb " +
"-Dsonar.branch.name=uat " +
"-Dsonar.projectKey=test_java " +
"-Dsonar.projectName=test_java " +
"-Dsonar.sourceEncoding=UTF-8 " +
"-Dsonar.language=java " +
"-Dsonar.projectVersion=1.0 " +
"-Dsonar.sources=. " +
"-Dsonar.java.binaries=."
}
}
}
}
sonar-scanner说明:
-Dsonar.host.url: 地址为sonarQube Server 地址
-Dsonar.login: sonarQube 生成的Token
-Dsonar.projectKey: SonarQube 建立的项目
-Dsonar.projectName: 可以和-Dsonar.projectKey 一致
-Dsonar.sourceEncoding: 编译方式
-Dsonar.language: 项目语言
-Dsonar.projectVersion: 自定义输入
-Dsonar.sources: 代码目录,.点代表当前目录
-Dsonar.java.binaries: SonarQube 在4.12后版本强制要求,后面必须跟.
五、扫描结果
六、其他说明
6.1、withSonarQubeEnv
使用withSonarQubeEnv来使用上面在Jenkins上配置SonarQube server的信息,不用再指定sonar.host.url和sonar.login mvn sonar:sonar后可以添加代码质量分析的参数,分析参数说明参见: https://docs.sonarqube.org/latest/analysis/analysis-parameters/
6.2、SonarQube Community 版本不支持多分支扫描
SonarQube Developer Edition 及以上版本是支持多分支扫描的,扫描时指定分支参数-Dsonar.branch=develop即可,就可以实现多分支代码扫描
//pipeline中如果没有打印调试信息,可以使用如下命令进行测试
/home/jenkins/agent/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonarscanner/bin/sonar-scanner \\
-Dsonar.host.url=http://192.168.10.230:9000 \\
-Dsonar.login=51d1b2ce2a65834241220b7e748ce5c33d4220fb \\
-Dsonar.branch.name=release \\
-Dsonar.projectKey=uat_academic-affairs-center \\
-Dsonar.projectName=uat_academic-affairs-center \\
-Dsonar.sourceEncoding=UTF-8 \\
-Dsonar.language=java \\
-Dsonar.projectVersion=1.0 \\
-Dsonar.sources=. \\
-Dsonar.java.binaries=. \\
-X
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22923.html