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

克隆项目
项目里定义文件

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.rhkb.cn/news/189032.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git GUI、SSH协议和IDEA中的Git使用详解

目录 前言 一、Git GUI的使用 1. 什么是Git GUI 2. 常见的Git GUI工具 3.使用 4.使用Git GUI工具的优缺点 优点: 缺点: 二、SSH协议 1.什么是SSH协议 2.SSH的主要特点和作用 3.SSH密钥认证的原理和流程 4. SSH协议的使用 三、IEDA使用git …

webrtc推拉流 srs报错:DTLS_HANG DTLS: > Hang, done=0, version=-1, arq=0

执行了./objs/srs -c conf/rtc.conf 打开了srs的推拉流网页: 推流 拉流 srs报错如下: [2023-11-08 21:55:23.489][Warn][44992][8xvf4d62][104][DTLS_HANG] DTLS: Hang, done0, version-1, arq0 观看srs日志,在sdp offer,answer…

【postgresql】 代替mysql的if函数

在postgresql 中用 COALESCE 来代替mysql中的 if ; COALEASE 函数的语法如下: COALESCE(expression_1, expression_2, expression_3, ...) COALESCE 函数接受多个参数,并且返回第一个非空的参数值; 如果所有参数都为空值&…

[护网杯 2018]easy_tornado 1(两种解法!)

题目环境:发现有三个txt文本文件 /flag.txt/welcome.txt/hints.txt 依此点开 flag在/fllllllllllllag文件中 在hints.txt文件中发现md5计算 md5(cookie_secretmd5(filename)) 并且三个文件中都存在filehash(文件名被哈希算法加密32位小写) 猜…

java excel、word、PPT转换成pdf预览

先引入包:[lib下载地址](https://mp.csdn.net/mp_download/manage/download/UpDetailed)Controllerpublic AjaxResult fileToPdf(RequestBody VerifyCode url, HttpServletResponse response, HttpServletRequest request) throws IOException {String fileUrl req…

[pipe-自写管道] 强网拟态2023-water-ker

程序分析 保护当然都开了, 题目给了一次增加, 释放, 修改一字节堆块的能力, 这里释放堆块后没有将其指针置空从而导致了 UAF. 漏洞利用 这里的堆块大小为 512 字节并是 SLAB_ACCOUNT, 所以可以直接利用管道去构造自写管道从而构造任意读写系统, 详细见大佬博客:【CTF.0x08】D…

NSF服务器

1.简介 1.1 NFS背景介绍 NFS是一种古老的用于在UNIX/Linux主机之间进行文件共享的协议。它古老到你必须穿着白大补才能接近一台计算机的年代。在那个年代,所有的联网计算机都被认为是可信的,而不像现今这样,任何人都有多种多样方法能连接到你…

【解决】conda-script.py: error: argument COMMAND: invalid choice: ‘activate‘

运行conda activate base报错: 试了网上找到的解决方法都不行: 最后切换了一下terminal: 从powershell改回cmd(不知道为什么一开始手贱换成powershell) 就可以了

(一)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

Python - 利用 OCR 技术提取视频台词、字幕

目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕&#xff0c…

4.HTML网页开发的工具

4. 网页开发的工具 4.1 快捷键 4.1.1 快速复制一行 快捷键:shiftalt下箭头(上箭头) 或者ctrlc 然后 ctrlv 4.1.2 选定多个相同的单词 快捷键: ctrld 4.1.3 添加多个光标 快捷键:ctrlalt上箭头(下箭头&…

CS224W6.1——介绍图神经网络GNN

之前我们讨论了一些节点嵌入技术,它们可以通过随机游走的过程学习与任务无关的特征。从这篇开始,我们介绍了令人兴奋的图神经网络技术,该技术基于图结构用多层非线性变换对节点特征进行编码。图神经网络在各种任务中表现出非凡的性能&#xf…

vue3响应式api

响应式api——compositon api setup: 不要再想this问题执行是在beforeCreated之前 beforeCreated:也就是创建了一个实例 created:挂载了数据 通过形参props接收,只读 以后所有代码都写到setup中 判断是否只读:isReadon…

Zabbix SNMPv3

一、Snmpv3简述 SNMPv3是Simple Network Management Protocol version 3(简单网络管理协议第三版)的缩写。它是一种网络管理协议,用于监控和管理网络中的设备、系统和应用程序。 相对于之前的版本,SNMPv3具有更强的安全性和扩展…

spring-cloud-stream

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

IIS前端服务和代理

前端服务可以用nginx和IIS开启,windows自带IIS方便管理一点。其实用docker的nginx更方便管理。 记录一下IIS的安装和开启服务过程 1、打开控制面板点击程序,再点击启用或关闭windows功能。 2、 点击左侧启用或关闭Windows功能。 3、把框框中全选上之后点…

便捷Benchmark.sh 自动匹配workload(自用)

​ 因为db_bench选项太多,而测试纬度很难做到统一(可能一个memtable大小的配置都会导致测试出来的写性能相关的的数据差异很大),所以官方给出了一个benchmark.sh脚本用来对各个workload进行测试。 该脚本能够将db_bench测试结果中…

CMOS介绍

1 二极管 2 CMOS 2.1 栅极、源极、漏极 2.2 内部结构 2.2 导电原理 - 原理:1.通过门级和衬底加一个垂直电场Ev,从而在两口井之间形成反形层2.如果加的电场足够强,反形层就可以把source(源极)和drain(漏极…

Doris学习--1、Doris简介、操作Doris、Doris架构(数据模型)

星光下的赶路人star的个人主页 心之所向,剑之所往 文章目录 1、Doris简介1.1 快速开始1.2 安装配置1.2.1 应知前提1.2.2 配置Doris1.2.2.0 配置前提1.2.2.1 配置FE(Frontend)1.2.2.2 启动FE1.2.2.3 连接FE1.2.2.4 停止FE1.2.2.5 配置BE&#…

物联网水表电子阀工作原理是怎样的?

随着科技的不断发展,物联网技术逐渐深入到我们的生活之中。作为智能家居的重要组成部分,物联网水表电子阀凭借其智能化、节能环保等优势,受到了越来越多用户的青睐。接下来,合众小编将来为大家介绍下物联网水表电子阀工作原理。 一…