当前位置: 首页 > news >正文

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

相关文章:

Jenkins 质量扫描

代码质量扫描工具(SonarQube) 质量评审 SonarQube有四个关键组件 ◼ SonarQube Server运行有三个组件 ◆ Web Server:UI ◆ Search Server:为UI提供搜索功能,基于ElasticSearch ◆ Compute Engine Server&#xff1a…...

【LeetCode刷题笔记】滑动窗口

992. K 个不同整数的子数组 解题思路: 滑动窗口 , 题目问题转化为: 求 「最多存在 K 个不同整数的子数组的个数」 与 「最多存在 K - 1 个不同整数的子数组的个数」 之差, 就是题目所求的 「恰好存在 K 个不同整数的子数组的个数」 , 最终问题就变成求解滑动窗口内,以 R …...

笔试题之指针和数组的精讲

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…...

.secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言: 勒索病毒成为了网络安全的一项严峻挑战,其中.secret勒索病毒尤为引人注目。这种恶意软件通过加密用户的数据文件,使其无法访问,并勒索受害者支付赎金以获取解密密钥。本文将介绍.secret勒索病毒的基本信息,以及…...

junit写搜索树测试

用法 assertTrue(range.contains("Two")); 2个参数,右边错就打印左边. AbstractSelfBalancingBinarySearchTree abt; AbstractBinarySearchTree.Node node; Before public void setUp() { abt new AbstractSelfBalancingBinarySearchTree() { Override protecte…...

顺丰接口对接-订单创建与取消(java单元测试)

api文档 下单接口 :https://qiao.sf-express.com/Api/ApiDetails?level3393&interName%E4%B8%8B%E8%AE%A2%E5%8D%95%E6%8E%A5%E5%8F%A3-EXP_RECE_CREATE_ORDER 取消订单接口: https://qiao.sf-express.com/Api/ApiDetails?level3339&interNa…...

C++:OJ练习(每日练习!)

编程题: 题一:计算日期到天数的转换 计算日期到天数转换_牛客题霸_牛客网 (nowcoder.com) 示例1 输入: 2012 12 31 输出: 366 思路一: 第一步:创建年,月,日的变量,并按…...

GPTs Hunter 是什么?

原文: https://openaigptguide.com/openai-gpts-hunter/ GPTs Hunter 是一个功能强大的免费导航网站,支持多语言,提供用户友好的界面。 GPTs Hunter:功能强大的免费导航网站 GPTs Hunter是一个功能强大的免费导航网站&#xff…...

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时 文章目录 导入库定时器初始化延时函数定时中断回调调用函数打包附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 首先 这个定时器是硬件底层级别的 优先级最高 如果调用 会导致GN…...

HDU 1027:Ignatius and the Princess II ← next_permutation()

【题目来源】http://acm.hdu.edu.cn/showproblem.php?pid1027【题目描述】 Now our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166 is about to kill our pretty Princess. But now the BEelzebub has to beat our hero first. feng5…...

主题讲座:全球增材制造现状与未来(暨香港科技大学广州|智能制造学域2024博士学位全额奖学金项目)

时间:2023 年11月16日(星期四)14:30 地点:合肥工业大学 学术会议中心三楼报告厅 主讲嘉宾:陈模军 助理教授 https://facultyprofiles.hkust-gz.edu.cn/faculty-personal-page/CHEN-Mojun/mjchen 报名表直达&#xff1…...

hugeGraph修改PropertyKey属性类型

修改PropertyKey字段属性的类型,发现没办法保留数据的前提下修改,智能是先删除数据,然后再修改,或者备份后修改再恢复。 方法一、 修改groovy脚本中的Text为Int后重新建元数据 schema.propertyKey(“youkey”).asText().valueSing…...

vscode 访问本地或者远程docker环境

1、vscode 访问docker本地环境 直接点击左下角连接图标,弹出选项可以选择容器,只要容器在本地运行者,选择attach可以看到运行中的容器可以选择,选择其中需要选择的就行 ## 运行容器,可以-d后台运行都可以 docker run…...

人工智能与充电技术:携手共创智能充电新时代

人工智能与充电技术:携手共创智能充电新时代 摘要:本文探讨了人工智能与充电技术的结合及其在未来充电设施领域的应用。通过分析智能充电系统的技术原理、优势以及挑战,本文展望了由人工智能驱动的充电技术为未来电动交通带来的巨大变革与机…...

『自定义B站视频播放速度』

哔哩哔哩 的最高播放速度是 2.0, 但对于我们这种程序员来说,2.0 速度观看学习视频还是稍微慢了点, 🫵🏻3.0 以上才是王道🫵🏻, 下面就是具体的操作方法: ① 在浏览器…...

Java入门篇 之 继承

本篇碎碎念:最近的课程遇到瓶颈了,看的时候感觉自己会了,但是结束仔细一回顾还是一知半解,一点一点来吧,基础必须要打好(自己给自己好的心里暗示,结局一定是好的) 今日份励志文案:慢慢改变,慢慢…...

如何计算掩膜图中多个封闭图形的面积

import cv2def calMaskArea(image,idx):mask cv2.inRange(image, idx, idx)contours, hierarchy cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)for contour in contours:area cv2.contourArea(contour)print("图形的面积为", area) image是…...

【Nginx】CentOS 安装Nignx

CentOS上安装Nginx: 1. 打开终端:使用SSH或者直接在服务器上打开终端。 2. 更新系统:运行以下命令以确保您的系统软件包列表是最新的: sudo yum update3. 安装Nginx:运行以下命令以安装Nginx: sudo yum…...

idea 代码快捷键Mac版

1、查询任何东西 双击 Shift2、文件内查找 Command F 3、文件内替换 Command R4、全局查找(根据路径) Command Shift F5、在当前文件跳转到某一行的指定处 Command L6、退回 / 前进到上一个操作的地方 Command Option 方向键左Command Opt…...

【NI-DAQmx入门】多通道数据采集

1.通道扩展解释 通道扩展是扩展数据采集设备的通道以包含另一个设备的通道的过程,从而有效地创建具有更多通道的任务。当使用通道扩展时,DAQmx 自动在 DAQmx 驱动程序级别路由触发器和时钟,以便多个设备同步。为了使设备作为一个整体运行&…...

利润中心(Profit Center)和段(Segment)在 SAP 中关系非常紧密,但它们的设计目的和应用场景有本质区别

利润中心(Profit Center)和段(Segment)在 SAP 中关系非常紧密,但它们的设计目的和应用场景有本质区别。简单来说,段(Segment)是利润中心的一个上级归类。它们之间通常是“一对多”的…...

Visio高效安装与激活全攻略:从零开始到成功运行

1. Visio安装前的准备工作 第一次安装Visio的朋友们,我强烈建议先做好这些准备工作。我自己在帮同事安装Visio时,经常遇到因为前期准备不足导致安装失败的情况。首先,检查你的电脑是否已经安装了其他版本的Office软件。如果之前安装过Office …...

终极Cursor Pro解锁指南:免费体验AI编程助手的完整解决方案

终极Cursor Pro解锁指南:免费体验AI编程助手的完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached you…...

VoxCPM-1.5-WEBUI问题解决:部署常见错误与一键启动脚本详解

VoxCPM-1.5-WEBUI问题解决:部署常见错误与一键启动脚本详解 1. 快速入门指南 1.1 镜像部署准备 在开始使用VoxCPM-1.5-WEBUI之前,您需要确保具备以下条件: 支持CUDA的NVIDIA显卡(建议RTX 3060及以上)至少16GB系统内…...

图像处理和深度学习笔记[特殊字符](一)

AI生命周期:数据准备 → 模型训练 → 模型转换 → 部署 → 监控↑ 算法工程师关注 ↑ ↓ 你将专注于此 ↓机器学习开发流程数据收集数据预处理特征提取 数据预处理和 特征提取(其实就是数据清洗和转换) 比较耗时耗力清洗和特征工程模型构…...

GodotPckTool 终极指南:如何在命令行中高效管理Godot游戏资源包

GodotPckTool 终极指南:如何在命令行中高效管理Godot游戏资源包 【免费下载链接】GodotPckTool Standalone tool for extracting and creating Godot .pck files 项目地址: https://gitcode.com/gh_mirrors/go/GodotPckTool 你是否曾经需要在不启动Godot引擎…...

海康MVS软件从下载到实时预览:MV-CA013-21UC工业相机5分钟极速上手教程

海康MVS软件从下载到实时预览:MV-CA013-21UC工业相机5分钟极速上手教程 工业视觉系统正成为智能制造的核心组件,而海康威视MV-CA013-21UC工业相机凭借其高帧率、低噪声和稳定性能,在自动化检测、机器人引导等领域广受欢迎。本文将带您从零开…...

实战应用:基于快马平台开发具备origin高级分析功能的在线工具

今天想和大家分享一个最近用InsCode(快马)平台做的实战项目——开发一个具备Origin高级分析功能的在线工具。作为一个经常需要处理实验数据的科研狗,Origin这类软件的分析功能确实强大,但每次都要安装本地软件实在麻烦。于是就想试试能不能做个在线版&am…...

保姆级教程:将你的YOLOv8模型用Gradio部署到公网,并设置密码保护(避免临时链接失效)

从原型到生产:YOLOv8模型的安全部署与Gradio高级应用指南 当你的YOLOv8模型在本地运行良好,接下来最自然的想法就是把它分享给团队成员、客户或者进行小范围演示。Gradio提供的shareTrue参数看似简单,但背后隐藏着许多值得深入探讨的技术细节…...

别再死记硬背DAQmx流程了!LabVIEW数据采集核心逻辑拆解:以USB-6008正弦波实验为例

从设计模式视角重构LabVIEW数据采集:以USB-6008正弦波实验为例 当LabVIEW新手第一次接触DAQmx数据采集时,往往会被"创建任务→添加通道→配置时钟→开始任务→读取数据→清除任务"的固定流程所困扰。这种机械记忆不仅容易遗忘,更难…...