jenkins学习笔记之十三:配置SonarScanner扫描Java项目

一、手动测试

注意此版本已经内置包含Java语言扫描插件,不再需要单独安装

1.clone代码

 git clone git@192.168.1.128:root/demo-maven-service.git  #demo-maven-service网上都有

2.手动编译项目

cd demo-maven-service/
mvn clean package
ll target/      #sonarscanner 需要扫描target目录下classes目录下编译后的类

3.配置SonarScanner

cd /usr/local/sonar-scanner/conf
vim sonar-scanner.properties 
# sonar扫描的目录,.表示当前目录
sonar.sources=.
#登录saona的账号秘密
sonar.login=admin
sonar.password=123456
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8

#sorar地址
sonar.host.url=http://192.168.1.134:9000
sonar.ws.timeout=30

4.执行SonarScanner

#sonar-scanner启动参数可以通过配置文件或者命令行指定,命令行优先级高于配置文 本行命令中sources配置会覆盖配置文件中定义的目录
sonar-scanner -Dsonar.projectKey=demo-maven-service \
  -Dsonar.projectName=demo-maven-service \
  -Dsonar.projectDescription='my first project!' \
  -Dsonar.links.homepage=http://www.baidu.com \
  -Dsonar.sources=src \
  -Dsonar.java.binaries=target/classes \
  -Dsonar.java.test.binaries=target/test-classes \
  -Dsonar.java.surefire.report=target/surefire-reports

5.查看扫描结果

#确保输出正常,包含此日志
INFO: ANALYSIS SUCCESSFUL, you can find the results at: http://192.168.1.134:9000/dashboard?id=demo-maven-service

访问扫描结束后输出的链接

二、SonarScanner集成之pipeline

社区版本存在的问题:项目所有的分支都在一个项目中,无法区分哪个版本对应哪个分支,如果一定要,只能每一个分支建立一个扫描项目,但是会生成太多太多的项目

1.创建sharelibrary 

# sonarqube.groovy
package org.devops


//scan
def SonarScan(projectName,projectDesc,projectPath){
    
        def scannerHome = "/usr/local/sonar-scanner"
        // 使用时间作为版本号,sh语法可以参考流水线语法
        def sonarDate = sh  returnStdout: true, script: 'date  +%Y%m%d%H%M%S'
        sonarDate = sonarDate - "\n"
    
        
        sh """ 
            ${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=${projectName} \
            -Dsonar.projectName=${projectName} -Dsonar.projectVersion=${sonarDate}  \
            -Dsonar.projectDescription=${projectDesc} -Dsonar.links.homepage=http://www.baidu.com \
            -Dsonar.sources=${projectPath} -Dsonar.java.binaries=target/classes \
            -Dsonar.java.test.binaries=target/test-classes -Dsonar.java.surefire.report=target/surefire-reports 

        """

}

sharelibrary中sh语法参考

2.编辑jenkinsfile

#新增以下内容
def sonar = new org.devops.sonarqube()
# 在build后面新增QA 步骤
        stage("QA"){
            steps {
                script{
                    tools.PrintMes("代码扫描","green")
                    sonar.SonarScan("${JOB_NAME}","${JOB_NAME}","src")            
                }
                
            }
        }

3.测试

提交任意push

 

 

三、SonarScanner集成之sonar插件

参考地址:https://docs.sonarqube.org/latest/analyzing-source-code/scanners/jenkins-extension-sonarqube/

1.安装插件

2.创建jenkins访问sonarqube的token

3.jenkins创建访问sonarqube凭据 

4.配置sonarqube服务地址

Manage Jenkins > Configure System

 

5.全局工具中配置sonarscanner(可选)

Manage Jenkins > Global Tool Configuration

6.修改sharelibrary

7.验证

四、多sonarqube服务

1.Manage Jenkins > Configure System中添加其他sonarqube服务

2.修改sharelibrary

3.修改jenkinsfile

4.验证

 

其他参考:

https://blog.csdn.net/tuzongxun/article/details/123806878

https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/

posted @ 2023-03-14 21:54  百衲本  阅读(3030)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码