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

简介: 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/

相关文章
|
8月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
8月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
10月前
|
存储 搜索推荐 算法
Java 大视界 -- Java 大数据在智能金融理财产品风险评估与个性化配置中的应用(195)
本文深入探讨了Java大数据技术在智能金融理财产品风险评估与个性化配置中的关键应用。通过高效的数据采集、存储与分析,Java大数据技术助力金融机构实现精准风险评估与个性化推荐,提升投资收益并降低风险。
Java 大视界 -- Java 大数据在智能金融理财产品风险评估与个性化配置中的应用(195)
|
10月前
|
人工智能 前端开发 Java
2025年WebStorm高效Java开发全指南:从配置到实战
WebStorm 2025不仅是一款强大的JavaScript IDE,也全面支持Java开发。本文详解其AI辅助编程、Java特性增强及性能优化,并提供环境配置、高效开发技巧与实战案例,助你打造流畅的全栈开发体验。
787 4
|
11月前
|
Java 应用服务中间件 Linux
在Java 12环境中配置和部署Apache Tomcat的步骤。
这段部署Tomcat的冒险旅程充满技术挑战,但同时也像游戏一样充满乐趣。它需要你提前准备,仔细执行,并随时准备解决意外情况。成功后,你就可以在这匹强壮的网络野马上,带着你的Java应用,冲向Web开发的璀璨星空。
300 56
|
11月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
558 5
|
11月前
|
Ubuntu jenkins 机器人
在Jenkins上配置触发Ubuntu环境的图形用户界面(GUI)构建任务。
以上,这趟融合了技术与艺术的Jenkins配置之旅就告一段落了。记住,技术应当像艺术一样有趣和生动,这样才能激发出最大的创新和效率。
340 2
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
261 13
|
Java Shell 数据库
【YashanDB知识库】调用外部UDF未能识别Java环境配置
【YashanDB知识库】调用外部UDF未能识别Java环境配置
【YashanDB知识库】调用外部UDF未能识别Java环境配置

推荐镜像

更多