Jenkins 质量扫描

代码质量扫描工具(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

克隆项目

项目里定义文件

bash 复制代码
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中调用代码质量扫描

相关推荐
Lovely_red_scarf14 小时前
Jenkins系列
jenkins
程序员勋勋15 小时前
【自动化测试】如何在jenkins中搭建allure
职场和发展·jenkins·测试覆盖率
萨格拉斯救世主1 天前
jenkins使用slave节点进行node打包报错问题处理
运维·jenkins
Narutolxy2 天前
精准优化Elasticsearch:磁盘空间管理与性能提升技巧20241106
大数据·elasticsearch·jenkins
晨欣3 天前
Elasticsearch里的索引index是什么概念?(ChatGPT回答)
大数据·elasticsearch·jenkins
铭毅天下4 天前
基于 Canal + Elasticsearch 的业务操作日志解决方案
大数据·elasticsearch·搜索引擎·全文检索·jenkins
饮啦冰美式4 天前
Jenkins找不到maven构建项目
运维·jenkins·maven
TracyCoder1234 天前
掌握ElasticSearch(八):聚集、文档间的关系
大数据·elasticsearch·jenkins
不惑_4 天前
ES文档:文档操作_doc(7.9.2)
大数据·elasticsearch·jenkins
MetaverseMan5 天前
kubesphere jenkins自动重定向 http://ks-apiserver:30880/oauth/authorize
运维·http·jenkins