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/

相关文章
|
12天前
|
Java Linux iOS开发
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
300 12
|
9天前
|
前端开发 Java 程序员
菜鸟之路day02-04拼图小游戏开发一一JAVA基础综合项目
本项目基于黑马程序员教程,涵盖面向对象进阶、继承、多态等知识,历时约24小时完成。项目去除了登录和注册模块,专注于单机游戏体验。使用Git进行版本管理,代码托管于Gitee。项目包含窗体搭建、事件监听、图片加载与打乱、交互逻辑实现、菜单功能及美化界面等内容。通过此项目,巩固了Java基础并提升了实际开发能力。 仓库地址:[https://gitee.com/zhang-tenglan/puzzlegame.git](https://gitee.com/zhang-tenglan/puzzlegame.git)
33 6
|
1月前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
12天前
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
46 6
|
12天前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
42 4
|
16天前
|
Java
CentOS7.8配置Adoptium-Java17运行环境
本指南介绍如何设置清华镜像源并安装 Temurin-17-JRE 运行环境。首先,编辑 `/etc/yum.repos.d/adoptium.repo` 文件,配置清华镜像源。接着,使用 `yum install -y temurin-17-jre` 命令安装 Temurin-17-JRE,并通过 `java --version` 验证安装成功。相关配置和操作界面截图附后。
33 8
|
12天前
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
105 1
|
30天前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
79 17
|
1月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
157 26
|
12天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
22 0