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

相关推荐
henan程序媛2 天前
Jenkins Pipline流水线
运维·pipeline·jenkins
wudinaniya3 天前
使用rsync+jenkins实现服务自动部署全流程
运维·jenkins·自动化部署
henan程序媛3 天前
jenkins项目发布基础
运维·gitlab·ansible·jenkins
小石潭记丶3 天前
elasticsearch设置账号和密码
大数据·elasticsearch·jenkins
识途老码3 天前
Centos7安装Jenkins
运维·servlet·jenkins
奔跑吧邓邓子3 天前
Jenkins从入门到精通,构建高效自动化流程
servlet·自动化·jenkins
江南剑雨4 天前
jenkinsfile实现镜像构建、发布
linux·运维·jenkins
小韩加油呀4 天前
jenkins配置eureka、nacos发布优雅上下线服务
运维·eureka·nacos·jenkins·优雅上下线
THE WHY4 天前
Jenkins pipeline配置示例
运维·ci/cd·jenkins
寻爱的希斯克利夫4 天前
Jenkins: fontconfig head is null, check your fonts or fonts configuration;
运维·jenkins