10分钟搭建一套代码质量监控平台

01、jenkins安装部署

01、Jenkins下载

中文官网地址:https://www.jenkins.io/zh/

02、Jenkins环境安装

安装jdk,上传jenkins安装包,启动jenkins,耐心等待启动完成(第一次需要个几分钟)

java -jar jenkins.war

执行日志里一定要记着下面红框里的东西

访问Jenkins,按步骤安装

http://192.168.1.12:8080 端口默认就是8080

  • 输入上一步记住的密码,或者去/root/.jenkins/secrets/initialAdminPassword文件里拷贝
  • 安装推荐的插件(需要耐心等待)
  • 创建管理员,点击保存并完成

  • 开始jenkins

03、全局工具配置

进入Manage Jenkins-->Global Tool Configuration,中文的话就是系统管理-->全局工具配置,依次配置各个工具

1、jdk

点击新增,取消自动安装,填写jenkins所在服务器的jdk路径

2、git

先在jenkins所在服务器上手动安装git

下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/

下载git 2.29.0版本,下载后上传git至服务器解压,进入git目录执行如下操作:

 
  1. #安装编译依赖

  2. yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

  3. # 检验相关依赖,设置安装路径

  4. ./configure --prefix=/usr/local/git

  5. # 编译安装

  6. make && make install

  7. # 删除已有的 git

  8. yum remove git

  9. # 配置环境变量

  10. vim /etc/profile

  11. # GIT_HOME

  12. GIT_HOME=/usr/local/git

  13. export PATH=$PATH:$GIT_HOME/bin

  14. # 刷新

  15. source /etc/profile

点击add git,取消自动安装,填写jenkins所在服务器git路径

3、maven

下载地址:http://maven.apache.org/download.cgi

下载后上传maven至服务器解压,并配置环境变量,并配置maven的settings.xml文件,和自己本地一样

其他工具如有需要也可以进行配置

注意:
全局工具中的配置写的基本都是jenkins所在服务器上的各个工具的路径。

02、jenkins集成sonar、jacoco

01、jenkins安装插件

进入系统管理 --> 插件管理,安装sonar插件

安装maven插件

安装jacoco插件

安装gitlab和gitlab hook插件

等待安装完成后重启jenkins

02、jenkins配置sonar服务

先在sonar平台上创建一个token

进入我的账号-->安全,复制令牌,一定要记住只有一次机会

3aa08af94991e923e4468b3931035ef6328101e6

jenkins上配置sonar的token凭据

进入系统管理-->Manage Credentials,点击全局,再点击添加凭据

设置凭据并保存

jenkins配置sonar服务

进入系统管理-->系统设置,找到SonarQube servers区域,点击Add SonarQube

最后点保存

jenkins配置sonar扫描器

进入系统管理-->全局工具配置,找到SonarQube Scanner区域,点击新增SonarQube Scanner

03、Jenkins配置扫描任务

点击新建Item,按照下图进行输入和选择

设置General

设置源码管理

通常我们的代码通过版本管理工具进行管理,svn或者git都比较常见,咱们这里用的是git

设置构建触发器

构建触发器的意思是在什么情况下这个任务会自动执行,自动触发的方式有很多中,一般选择一两种即可;文档会介绍几种用法

① GitLab webhook

对应的就是图中的Build when a change is pushed to GitLab,设置如下:

  • 勾选Build when a change is pushed to GitLab,点击高级最后的generate 生成secret

  • 在gitlab上创建新的webhook

登录gitlab,打开自己的项目仓库,点击设置-->导入所有仓库

测试一下,界面上方显式http 200则说明配置成功

② 定时构建和轮询SCM

  • 定时构建
    顾名思义,定时构建就是指到了规定的时间就会自动执行这个任务
  • 轮询SCM
    轮询SCM也是一种定时任务,他的意思是到了指定的时间会去判断代码版本库是否发生变化,如果发生变化,则自动执行任务,没有变化则不执行任务
  • 定时任务的规则
    定时任务的规则和linux的定时任务写法是一致的,

第一个*表示分钟,取值是0-59第二个*表示小时,取值是0-23第三个*表示一个月的几号,取值1-31第四个*表示是几月,取值1-12第五个*表示周几,取值0-7,其中0和7都代表周日
举几个例子:每隔5分钟构建一次: H/5 * * * *每两小时构建一次: H H/2 * * *周一到周五早9点到下午16点之间,每隔两小时的第45分钟执行:45 9-16/2 * * 1-5除了12月,每个月的1号15号执行:H H 1,15 1-11 *每小时的前半个小时每隔10分钟执行一次:H(0-29)/10 * * * *
  • 举几个例子:每隔5分钟构建一次: H/5 * * * *每两小时构建一次: H H/2 * * *周一到周五早9点到下午16点之间,每隔两小时的第45分钟执行:45 9-16/2 * * 1-5除了12月,每个月的1号15号执行:H H 1,15 1-11 *每小时的前半个小时每隔10分钟执行一次:H(0-29)/10 * * * *
  • 举几个例子:每隔5分钟构建一次: H/5 * * * *每两小时构建一次: H H/2 * * *周一到周五早9点到下午16点之间,每隔两小时的第45分钟执行:45 9-16/2 * * 1-5除了12月,每个月的1号15号执行:H H 1,15 1-11 *每小时的前半个小时每隔10分钟执行一次:H(0-29)/10 * * * *
  • 举几个例子:每隔5分钟构建一次: H/5 * * * *每两小时构建一次: H H/2 * * *周一到周五早9点到下午16点之间,每隔两小时的第45分钟执行:45 9-16/2 * * 1-5除了12月,每个月的1号15号执行:H H 1,15 1-11 *每小时的前半个小时每隔10分钟执行一次:H(0-29)/10 * * * *
  • 举几个例子:每隔5分钟构建一次: H/5 * * * *每两小时构建一次: H H/2 * * *周一到周五早9点到下午16点之间,每隔两小时的第45分钟执行:45 9-16/2 * * 1-5除了12月,每个月的1号15号执行:H H 1,15 1-11 *每小时的前半个小时每隔10分钟执行一次:H(0-29)/10 * * * *
  • 举几个例子:每隔5分钟构建一次: H/5 * * * *每两小时构建一次: H H/2 * * *周一到周五早9点到下午16点之间,每隔两小时的第45分钟执行:45 9-16/2 * * 1-5除了12月,每个月的1号15号执行:H H 1,15 1-11 *每小时的前半个小时每隔10分钟执行一次:H(0-29)/10 * * * *

③ 其他工程构建后触发

指的是在其他任务执行完成后,自动驱动当前任务执行,一般是具有上下游关系时使用

配置Build

因为咱们这个任务是做sonar扫描和jacoco统计的,所以Goals and options设置如下,并不是所有任务都这么配哦

clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true 

配置jacoco报告插件

jacoco报告插件可以将覆盖率情况最后展示在jenkins的任务结果中,并且还可以针对覆盖率是否通过进行设置;覆盖率不达标则任务失败,覆盖率达标则任务成功

设置代码覆盖率的最大值最小值,勾选不满足最小值时任务失败,设置最小值(根据各自公司定)

增量变化,如果勾选了,指的是比上一次成功构建的覆盖率的增量变化,只能比设置的增量大,比增量小的任务也会失败

覆盖率不满足时任务失败则sonar代码扫描不会进行

sonar扫描插件设置

然后点击高级,输入如下内容

 
  1. -Dsonar.projectKey=jacoco$BUILD_NUMBER

  2. -Dsonar.projectName=jacocojenkins

  3. -Dsonar.language=java

  4. -Dsonar.sourceEncoding=UTF-8

保存后执行

手动执行

自动执行

自动执行取决于设置的构建触发,咱们以git代码提交为触发条件,修改本地项目代码,然后git提交

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA面试大全之集合IO篇

目录 1、集合 1.1、Collection 1.1.1、集合有哪些类? 1.1.2、ArrayList的底层? 1.1.3、ArrayList自动扩容? 1.1.4、ArrayList的Fail-Fast机制? 1.2、MAP 1.2.1、Map有哪些类? 1.2.2、JDK7 HashMap如何实现…

基于springboot的交通管理在线服务系统的开发

传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装交通管理在线服务系统软件来发挥其高效地信息处理的作用&#xff0…

人工智能的春天:改变已然发生

以下文章来源:青岛日报 某种意义上说,这个春天属于人工智能(AI)。 继一年多前ChatGPT惊艳全球后,OpenAI再次放出“王炸”成果——视频大模型Sora;苹果放弃布局多年的造车计划,将ALL in AI&#…

Leetcode第66题:加一

题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。 代码实现 class Solution:def plusOne(s…

Temple of Doom靶场nodejs获取shellss-manager漏洞tcpdump提权

下载链接: Temple of Doom: 1 ~ VulnHub 下载完成后直接在vxbox中导入即可,网络链接模式根据自身情况而定(我采用的桥接模式) 正文: 先用nmap进行扫描靶机ip nmap -sn 192.168.1.1/24 对192.168.1.5进行端口探测&a…

解决华为云服务器宝塔面板无法访问显示“此站点的连接不安全”问题

已经配置好安全组以及初始化宝塔面板,还是无法访问镜像管理页面,提示此站点的连接不安全。 解决方案 将地址https改为http即可进入。 成功登录后,开启面板SSL即可。

商家店铺如何批量抓取淘宝、天猫、1688主图视频并下载保存

当前,大多的平台商品越来越多都有主图视频、评论视频、详情视频、然而,在一定程度上就意味着,这也是引流渠道的一步重要环节,如果自己的店铺商品没有相应的主图视频,很可以会严重流失客源。小编就为大家来介绍批量抓取…

图解MySQL目录

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 一 .图解MySQL介绍 重点突击 MySQL 索引、事务、锁、日志等面试常问知识。 二 . 基础篇 执行一条 select 语句,期间发生了什么? : 执行一条 select 语句,期间发生了什…

3.26学习总结java初步实现学生管理系统

(该项目通过视频讲解过程中完成,其中将一些操作进行了修改和完善,其目的是为了巩固前面学习java的一些用法,熟悉写项目的过程) 一.项目要求 学生类: 属性:id、姓名、年龄、家庭住址 添加功能: 键盘录入每一个学生信息并添加,需要满足以下要求: ID唯一 删除功能…

mmocr安装和使用

https://github.com/open-mmlab/mmocr/blob/main/README_zh-CN.md https://mmocr.readthedocs.io/en/dev-1.x/get_started/quick_run.html 介绍 MMOCR 是基于 PyTorch 和 mmdetection 的开源工具箱,专注于文本检测,文本识别以及相应的下游任务&#xf…

window平台C#实现软件更新功能

一 实现程序更新思路 程序实现自我升级,一般有两种方式: 1. 独立的更新程序 开发一个独立的更新程序如Update.exe,用于检查主程序是否有新版本,并下载和安装新版本。 实现步骤: 主程序启动完后,调用一下…

C++引用学习day2

思维导图 定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数: 设置长度:void set_l(int l) 设置宽度:void set_w(int w) 获取长度&#…

Vue 2 组件发布到 npm 的常见问题解决

按照 Vue 2 组件打包并发布到 npm 的方法配置项目后,项目在实际开发过程中,随着代码写法的多样性增加而遇到的各种打包问题,本文将予以逐一解决: 本文目录 同时导出多个组件 样式表 import 问题解决 Json 文件 import 问题解决…

Java 面试宝典:什么是可见性?volatile 是如何保证可见性的?

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 本文已收录到我的技术网站:https://skjava.com。有全网最优质的系列文章、Java 全栈技术文档以及大厂完整面经 什么是可见性? 可见性是指一个线程对共享变量所作…

C语言例4-5:getchar()函数的调用格式和使用的例子

代码如下&#xff1a; //getchar()函数的调用格式和使用的例子 #include<stdio.h> //编译预处理命令&#xff0c;即文件包含命令 int main(void) {char ch1, ch2;int a;ch1 getchar(); //从键盘输入一个字符并赋予字符型变量ch1ch2 getchar(); //从键盘输入一个…

基于Java实验室预约管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

C语言例4-20:从键盘输入年和月,输出该月的天数。

代码如下&#xff1a; //从键盘输入年和月&#xff0c;输出该月的天数。 #include<stdio.h> int main(void) {int year, month, days;printf("输入年和月&#xff1f;\n");scanf("%d,%d",&year,&month); //从键盘输入年和月switch(month)…

本地大模型(免安装绿色版)

上一篇文章我们讨论了如何在本地运行大模型 。 安装本地大模型 大部分软件都需要安装&#xff0c;今天是免安装绿色版。 很多人下载不了原版&#xff0c;所以我放百度网盘了。 下载 下载&#xff1a;llava-1.5大模型(7b参数,流量警告:4G) 运行&#xff1a;.\llava-v1.5-7b-…

codeforces round.906 - E - Mirror Grid (数学,坐标变换)

You are given a square grid with n rows and n columns. Each cell contains either 0 0 0 or 1 1 1. In an operation, you can select a cell of the grid and flip it (from 0 → 1 0→1 0→1 or 1 → 0 1→0 1→0). Find the minimum number of operations you need…

TSINGSEE青犀智慧充电桩消防安全烟雾火焰AI算法识别预警方案

一、方案背景 随着AI人工智能、大数据、云计算等技术快速发展与落地&#xff0c;视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理&#xff0c;提高运营效率&#xff0c;保障充电站设备的安全和稳定运行。 通过TSINGS…