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
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
本文介绍了如何使用IDEA(IntelliJ IDEA)创建一个新的Java项目,并运行一个简单的Java程序输出"Hello Word"。文章详细展示了创建项目的步骤,包括选择JDK版本、设置项目名称和路径、创建包和类,以及编写和运行代码。最后,还展示了如何通过IDEA的运行功能来执行程序并查看输出结果。
34 4
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
|
24天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
24天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
12天前
|
算法 Java
Java项目不使用框架如何实现限流?
Java项目不使用框架如何实现限流?
20 2
|
12天前
|
XML JavaScript Java
NekoHTML 是一个基于Java的HTML扫描器和标签补全器
**NekoHTML** 是一个基于Java的HTML扫描器和标签补全器(tag balancer),由J. Andrew Clark开发。它主要用于解析HTML文档,并能够“修正”许多在编写HTML文档过程中常犯的错误,如增补缺失的父元素、自动用结束标签关闭相应的元素,以及处理不匹配的内嵌元素标签等。这使得程序能够以标准的XML接口来访问HTML文档中的信息。 ### NekoHTML的主要特点包括: 1. **错误修正**:能够自动修正HTML中的常见错误,如未闭合的标签等。 2. **DOM树生成**:将HTML源代码转化为DOM(Document Object Model)结构,便
|
24天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
2月前
|
jenkins 测试技术 持续交付
Jenkins 在多分支项目中的应用
【8月更文第31天】在现代软件开发实践中,分支管理是一项至关重要的策略,它允许开发团队在不同的功能开发、修复bug或进行实验时不会干扰主干代码。随着项目的复杂度增加,维护多个分支并确保它们的质量变得越来越具有挑战性。Jenkins 作为一款流行的持续集成(CI)和持续部署(CD)工具,提供了强大的功能来支持多分支项目的自动化测试和部署。本文将探讨 Jenkins 如何帮助管理多分支项目,并提供具体的代码示例。
25 0
|
2月前
|
Kubernetes jenkins 持续交付
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
|
2月前
|
前端开发 jenkins 持续交付
jenkins学习笔记之二十:docker in docker运行pipeline
jenkins学习笔记之二十:docker in docker运行pipeline
|
2月前
|
jenkins Java 持续交付
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
下一篇
无影云桌面