Jenkins 质量扫描

news/2025/1/3 5:58:29/

代码质量扫描工具(SonarQube)

质量评审

SonarQube有四个关键组件
◼ SonarQube Server运行有三个组件
◆ Web Server:UI
◆ Search Server:为UI提供搜索功能,基于ElasticSearch
◆ Compute Engine Server:处理代码分析报告并将之存储到SonarQube Database中
◼ SonarQube Database:负责存储SonarQube的配置,以及项目的质量快照等
◼ SonarQube Plugin
◼ Code analysis Scanners:代码扫描器,扫描后将报告提交给SonarQube Server

下载
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.2.1.78527.zip

apt update && apt install openjdk-11-jdk

root@ubuntu20:~# sysctl -w vm.max_map_count=524288
vm.max_map_count = 524288
sysctl -w fs.file-max=131072

添加到/etc/sysctl.conf
vm.max_map_count = 524288
fs.file-max=131072

sysctl -p

部署步骤1:安装Postgresql 12
apt install postgresql -y
pg_createcluster 12 main --start #初始化并启动

部署步骤2:配置Postgresql 12
root@ubuntu20:~# vi /etc/postgresql/12/main/postgresql.conf
listen_addresses = ‘*’

root@ubuntu20:/etc/postgresql/12/main# vi pg_hba.conf
host all all 0.0.0.0/0 md5

root@ubuntu20:/etc/postgresql/12/main# systemctl restart postgresql
root@ubuntu20:/etc/postgresql/12/main# systemctl enable postgresql

部署步骤3:为SonarQube初始化数据库
创建用户并授权
root@ubuntu20:/etc/postgresql/12/main# su - postgres
postgres@ubuntu20:~$ psql -U postgres
psql (12.16 (Ubuntu 12.16-0ubuntu0.20.04.1))
Type “help” for help.

postgres=# CREATE USER sonarqube WITH ENCRYPTED PASSWORD ‘magedu.com’;

postgres=# CREATE DATABASE sonarqube OWNER sonarqube;
CREATE DATABASE
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
GRANT
postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD ‘www.magedu.com’;
ALTER ROLE

部署步骤4:测试Postgresql数据库的连通性
root@ubuntu20:/etc/postgresql# psql -U sonarqube -h 192.168.1.52

部署步骤5:安装SonarQube
root@ubuntu20:/usr/local# unzip sonarqube-10.2.1.78527.zip -d /usr/local
cd /usr/local/
root@ubuntu20:/usr/local# ln -sv sonarqube-10.2.1.78527/ sonarqube

创建用于运行SonarQube的普通用户,并将安装目录下的文件授权该用户访问
useradd -m sonarqube

chown -R sonarqube.sonarqube /usr/local/sonarqube/*

部署步骤6: 配置SonarQube
配置SonarQube,编辑conf/sonar.properties配置文件,修改关键参数

root@ubuntu20:/usr/local/sonarqube/conf# vi sonar.properties
修改连接数据库的账号和密码
sonar.jdbc.username=sonarqube
sonar.jdbc.password=magedu.com
修改数据库相关的URL,这里以此前配置的postgresql为例,其中的localhost为DB服务器的地址,而sonarqube为数据库名称;
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
#设定Web Server监听的地址和端口
sonar.web.host=0.0.0.0
sonar.web.port=9000
如有必要,可修改SonarQube持久存储数据的位置,以下两个相对路径,均起始于sonarqube的安装目录,我们也可以使用绝对路径;
sonar.path.data=data
sonar.path.temp=temp

启动

root@ubuntu20:/usr/local/sonarqube/conf# su - sonarqube -c “/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start”
/usr/bin/java
Starting SonarQube…
Started SonarQube.

启动不了,可能跟java版本有关,太低,安装17版本后成功启动

访问
http://192.168.1.52:9000/

默认用户和密码admin

修改密码为qq号

在这里插入图片描述

安装 sonar-scanner

sonar-scanner-cli-5.0.1.3006-linux.zip
下载
https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/

root@ubuntu20:~# ln -sv /usr/local/sonar-scanner-5.0.1.3006-linux/ /usr/local/sonar-scanner

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

定义分析参数
root@ubuntu20:/usr/local/sonar-scanner/conf# vi sonar-scanner.properties

sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
sonar.login=jenkins
sonar.password=2368756722
sonar.log.level=INFO
sonar.verbose=false

克隆项目
项目里定义文件

root@ubuntu20:~/spring-boot-helloWorld# cat sonar-project.properties 
# 项目的惟一标识
sonar.projectKey= spring-boot-helleworld
# 项目的名称,用于显示在sonar web中
sonar.projectName=spring-boot-helleworld
# 项目的版本
sonar.projectVersion=0.9.8
# 需要分析的源码所在的目录
sonar.sources=.
# targe的位置
sonar.java.binaries=.
# 指定项目中使用的编程语言
sonar.language=java
#编码格式
sonar.sourceEncoding=UTF-8

root@ubuntu20:~/spring-boot-helloWorld# /usr/local/sonar-scanner/bin/sonar-scanner

在这里插入图片描述

Jenkins和SonarQube

配置Jenkins接入SonarQube进行代码质量评估
配置Jenkins使用sonar-scanner进行代码质量扫描,并
将结果报告给SonarQube Server的主要步骤如下
◼ 首先,在Jenkins上安装SonarQube Scanner插件
◼ 其次,配置Jenkins对接到SonarQube Server
◼ 第三,配置Jenkins的全局工具sonar-scanner
◼ 第四,在SonarQube上添加回调Jenkins的Webhook
◼ 第五,在Jenkins项目上调用sonar-scanner进行代码质
量扫描
◼ 最后,通过SonarQube确认扫描结果的评估;

认证到 SonarQube Server
SonarQube Server拒绝匿名访问时,需要配置Jenkins上的Sonar-Scanner工具可自动完成认证
◼ 在SonarQube上创建用户账号(不建议使用admin账号)
◆配置 → 权限 → 用户
◼ 为用户账号赋予相应的权限,例如执行分析和置备项目
◆配置 → 权限 → 全局权限
◼ 以新建用户的身份生成令牌,该令牌将被Jenkins用于通过相应的URL打开SonarQube 设定用户权限
为用户生成认证用的token
Token在创建完成
并离开创建页面后
无法再次获取

在这里插入图片描述
squ_6ed44e92760413ab3006cf2a7461796c5c2f0295

在这里插入图片描述

将SonarQube令牌存储为Jenkins凭证
在Jenkins上保存SonarQube上Jenkins用户的令牌为凭证,凭证类型为Secret text;
 Manage Jenkins → Manage Credentials
在这里插入图片描述

在Jenkins上添加SonarQube Server
在Jenkins的配置中,添加SonarQube Server,并选择打开该Server时使用的令牌凭证
◼ Manage Jenkins → Configure System → SonarQube Servers
在这里插入图片描述

在SonarQube添加Jenkins的回调接口
root@ubuntu20:~# openssl rand -hex 16
534e2dc624946e3339e45ecfd8d4d716
生成密码,只要和Jenkins保持一致即可
在这里插入图片描述

Jenkins配置SonarQube servers

SonaQube-Server
填写 http://192.168.1.52:9000 这个是sonarqube的服务器地址
并添加secret ,
在这里插入图片描述

为Jenkins添加sonar-scanner工具
 为Jenkins添加全局工具sonar-scanner,以便在构建任务中调用
◼ Manage Jenkins → 全局工具配置
在这里插入图片描述

流水线添加构建后操作: sonarqube

在这里插入图片描述

执行流水线
在这里插入图片描述

查看有最新的代码扫描
在这里插入图片描述

通过maven目标 使用代码扫描

在这里插入图片描述
clean test package sonar:sonar -Dsonar.host.url=http://192.168.1.52:9000 -Dsonar.login=${sonarToken}
在这里插入图片描述

也可以在shell中调用代码质量扫描


http://www.ppmy.cn/news/1211979.html

相关文章

Java中String的概念与应用

引言: 在Java编程语言中,String(字符串)是一个非常重要且广泛使用的类。String类代表不可变的字符序列,它提供了一系列方法来操作字符串。本文将详细描述Java中String的概念、特性以及在实际开发中的应用。 一、String…

第一百六十九回 如何修改NavigationBar的形状

文章目录 1. 概念介绍2. 修改方法2.1 修改属性2.2 包裹容器2.3 剪裁形状 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"NavigationBar组件"相关的内容,本章回中将介绍 如何修改NavigationBar组件的形状.闲话休提&#xff…

出电子书了!

熟悉小灰的小伙伴们都知道,小灰曾经创作了三本算法有关的图书,分别是《漫画算法》、《漫画算法Python篇》、《漫画算法2》。 如今,这三本书在全网的销量超过10W册,可以说是IT领域最畅销的图书之一。 小灰的这三本算法书&#xff0…

js 求数组中的对象某个属性和

可以直接看下效果 代码&#xff1a; <script>let list [{num: 1,price: 10,},{num: 2,price: 10,},{num: 3,price: 10,},{num: 4,price: 10,},]// for循环 求总数和 num的和let num 0for (let i 0; i < list.length; i) {num list[i].num}console.log(第一种&am…

Linux 进程优先级 | 环境变量

目录 进程优先级 基本概念 认识优先级 PRI and NI NI值的范围 查看进程优先级 用top命令更改已存在进程的nice&#xff1a; 如何修改优先级 其他概念 环境变量 基本概念 常见环境变量 和环境变量相关的命令 环境变量的组织方式 通过代码如何获取环境变量 环境变量通…

要找事做,我真怕被闲死

要找事做&#xff0c;我真怕被闲死 | 昨晚睡足了5个多小时&#xff0c;元气开始恢复&#xff0c;今晨6点钟醒来&#xff0c;如厕后无睡意&#xff0c;便窝在被子里闭目养神&#xff0c;同时想心事。 7点钟翻身起床穿衣洗刷后&#xff0c;烧瓶开水泡杯浓茶&#xff0c;打开电脑…

Shopee活动取消规则是什么?shopee官方促销活动怎么取消?

作为一家知名的电商平台&#xff0c;shopee官方对于消费者取消促销活动的请求给予了相应的规定和处理流程。 shopee活动取消规则是什么&#xff1f; 首先&#xff0c;消费者应该明确了解虾皮的促销活动取消规则。根据虾皮的官方规定&#xff0c;消费者在参与促销活动之前&…

牛客---简单密码python

现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应&#xff1a; 1--1&#xff0c; abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0&#xff0c;把密码中出现的小写字母都变成九键键盘对应的数字&#xff0c;如&#xff1a;a 变成 2&#x…