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

相关推荐
万万君10 小时前
Linux 更改Jenkins使用其他账户启动
linux·jenkins
赤叶丶秋枫10 小时前
Jenkins入门使用
运维·jenkins
紫菜(Nori)10 小时前
Jenkins Api Token 访问问题
运维·jenkins
嘤嘤怪呆呆狗17 小时前
【开发问题记录】使用 Docker+Jenkins+Jenkins + gitee 实现自动化部署前端项目 CI/CD(centos7为例)
前端·vue.js·ci/cd·docker·gitee·自动化·jenkins
张某人想退休17 小时前
Postman最新接口自动化持续集成
自动化·jenkins·postman
lifeng43211 天前
Jenkins集成部署(图文教程、超级详细)
运维·jenkins
无所不在的物质1 天前
Jenkins基础教程
运维·云原生·自动化·jenkins
喝醉酒的小白1 天前
ElasticSearch 的核心功能
大数据·elasticsearch·jenkins
只会copy的搬运工2 天前
Jenkins持续集成部署——Jenkins实战与运维(2)
jenkins
花姐夫Jun2 天前
在 CentOS 8 系统上安装 Jenkins 的全过程
linux·centos·jenkins