Jenkins集成SonarQube实现代码质量检查

news2024/11/6 3:10:59

文章目录

    • 一、前提配置
      • 1.1 安装及配置SonarQube Scanner插件
      • 1.2 配置SonarQube servers
    • 二、非流水线集成SonarQube
      • 1.1 配置非流水线任务
    • 三、流水线集成SonarQube

一、前提配置

1.1 安装及配置SonarQube Scanner插件

(1) 点击【系统管理】>【插件管理】>【可选插件】搜索SonarQube Scanne点击安装

(2)点击【系统管理】>【全局工具配置】搜索SonarQube Scanner新建一个自动安装

1.2 配置SonarQube servers

(1)使用admin用户登入sonar平台,点击【右上角用户头像】>【我的账号】>【安全】生成一个新的令牌,复制令牌内容后面会使用到

(2)新建凭证:点击【系统管理】>【Manager files】>【全局】创建sonar凭证

(3)点击【系统管理】>【系统配置】搜索到 SonarQube servers 进行配置

(4)SonarQube关闭审查上传SCM功能

二、非流水线集成SonarQube

1.1 配置非流水线任务

# 项目唯一标记
sonar.projectKey=web_JAR
# 项目名字
sonar.projectName=web_JAR
# 版本号
sonar.projectVersion=1.0
# 指定扫描目录 点表示项目根目录
sonar.sources=.
# 对test、target目录不进行扫描
sonar.exclusions=**/test/**,**/target/**
# JDK设置
sonar.java.source=1.8
sonar.java.target=1.8
# 字符集
sonar.sourceEncoding=UTF-8

三、流水线集成SonarQube

(1) 项目根目录,创建sonar-project.properties文件

# must be unique in a given SonarQube instance
sonar.projectKey=web_demo
# this is the name and version displayed in the SonarQube UI. Was mandatory
prior to SonarQube 6.1.
sonar.projectName=web_demo
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on
Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.java.target=1.8
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

流水线代码:

pipeline {
    agent any

    stages {
        stage('拉取代码') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[url: 'git@152.136.184.149:gitlab-instance-0d7d20f4/cicd.git']]])
            }
        }
		stage('打JAR包') {
            steps {
               sh 'mvn clean package'
            }
        }
				
		
		stage('SonarQube代码审查') {
			steps{
				script {
					//引入Jenkins SonarQube-Scanner全局工具 "全局配置中以SonarQube-Scanner命名的工具"
					scannerHome = tool 'SonarQube-Scanner'
			}
			//引用SonarQube环境 "系统配置中配置的SonarQube servers的name值 "
			withSonarQubeEnv('sonar') {
			//执行sonar-scanner命令
			sh "${scannerHome}/bin/sonar-scanner"
				}
			}
		}
		
		
		stage('部署前操作') {
            steps {
               sshPublisher(publishers: [sshPublisherDesc(configName: '120.48.34.146', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''source /etc/profile
bash /home/qinzt/jar/helloword/run.sh stop helloword-*.jar
mv /home/qinzt/jar/helloword/helloword-*.jar{,.$(date +%F-%S)}''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
		stage('远程部署') {
            steps {
               sshPublisher(publishers: [sshPublisherDesc(configName: '120.48.34.146', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''source /etc/profile
cd /home/qinzt/jar/helloword && ./run.sh start helloword-*.jar''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'jar/helloword', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: '**/helloword-*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }   
        }
    }
	post {
		//构建失败发邮件通知
		unsuccessful  {
			emailext attachLog: true, body: '${FILE,path="email.html"}', subject: '【构建通知】:${PROJECT_NAME}', to: '1790168505@qq.com'
		}
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty核心模块、核心组件理解

文章目录 一、入门案例二、Bootstrap、ServerBootstrap三、Future 、ChannelFuture四、Channel五、Selector六、ChannelHandler 及其实现类七、Pipeline 和 ChannelPipeline八、ChannelHandlerContext九、ChannelOption十、EventLoopGroup 和其实现类十一、Unpooled类与ByteBuf…

Vue3技术5之watchEffect函数、Vue3生命周期、自定义hook函数

Vue3技术5 watchEffect函数Demo.vue总结 Vue3生命周期Vue3生命周期测试App.vueDemo.vue 组合式API使用生命周期钩子Demo.vue 总结: 自定义hook函数获取鼠标的x,yDemo.vue 使用hook方式文件目录hooks/usePoint.jsApp.vueDemo.vueTest.vue watchEffect函数 Demo.vue …

MicroPython ESP8266 GPIO引脚使用详解

MicroPython ESP8266 GPIO引脚使用 📌相关篇《【MicroPython esp8266】固件烧写教程》 ✨本案例基于Thonny平台开发。✨ 📜固件版本信息:MicroPython v1.19.1 on 2022-06-18; ESP module with ESP8266 🔖ESP8266可用管脚有&…

计算机组成原理——第六章总线(上)

误逐世间乐,颇穷理乱情 文章目录 前言6.1.1 总线概述6.1.2 总线的性能指标6.2 总线仲裁(408不考) 前言 本章在概述部分我们会首先介绍一下总线的基本概念,介绍一下总线的分类以及经典结构,介绍一些性能指标来评价总线的性能如何,…

电子招标采购系统源码—企业战略布局下的采购

​ 智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明&#xff0…

通过单线程/线程池/分治算法三种方式实现1亿个数字的累加

一、任务类型 我们在做项目的时候,都需要考虑当前的项目或者某一个功能主要的核心是什么?是CPU密集计算型,还是IO密集型任务。我们调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地…

AIGC潮水中,重新理解低代码

如果将一句话生成应用形容成L4级的“无人驾驶”,伙伴云的「AI搭建」则更像L2级的“辅助驾驶”。 作者|斗斗 出品|产业家 2023年,AIGC下的低代码赛道“暗流涌动”。 “对于「AI搭建」的搭建效果,尤其是在场景覆盖的广度上,连…

正式开赛|2023年“桂林银行杯”数据建模大赛暨全国大学生数学建模竞赛广西赛区热身赛

为学习贯彻党的二十大工作报告中关于加快发展数字经济、促进数字经济和实体经济深度融合的重要指示,不断推进数字化转型与金融科技创新,桂林银行联合全国大学生数学建模竞赛广西赛区组委会、广西应用数学中心(广西大学)共同主办20…

如何选择CDN厂商

如果您的在线业务面临着流量和访客数量的增加,如果您想提高网站速度和用户体验,选择合适的CDN提供商是朝着正确方向迈出的一步,那么如何来选择最合适的CDN厂商呢,火伞云小编今天为您解答: 一、测试潜在的CDN提供商 对…

centos7.6非默认端口的ssh免密登录(centos7.6指定端口的ssh免密登录)

非默认端口号(以6622端口号示例)的免密登录 1.1. 修改/etc/ssh/sshd_config Port 6622 1.2. 重启sshd服务 service sshd restart 1.3. 创建用户ds(可选,这里以ds用户做免密为示例) adduser ds; 1.4. 查看ds用户(可选) id ds; …

HBase高手之路6—HBase高可用

文章目录 HBase的高可用一、HBase高可用简介二、搭建HBase的高可用1.在HBase的conf文件夹中创建一个backup-masters的文件2.修改backup-masters,添加作为备份master的节点信息3.分发backup-masters文件到其他的服务器4.重新启动HBase5.查看web ui 三、测试高可用1.尝…

辉煌优配|黄金价格创近两年半新高!2只黄金股一季度预增

黄金板块早盘走强。 4月14日早盘,黄金板块团体走高,次新股四川黄金开盘半小时内拉升至涨停,封单资金到达7279.78万元,中润资源、晓程科技涨幅居前,分别为8.96%、8.48% 消息面上来看,近期全球黄金期货价格节…

Matlab进阶绘图第17期—气泡热图

气泡热图是一种特殊的热图(Heatmap)。 与传统热图相比,气泡热图利用不同颜色、不同大小的圆形表示数据的大小,可以更加直观地对矩阵数据进行可视化表达。 本文使用自制的bubbleheatmap小工具进行气泡热图的绘制,先来…

AttributeError: ‘LTP‘ object has no attribute ‘init_dict‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【刷题】小技巧

好久没更了 写天梯模拟L1都有题不能AC&#xff0c;是什么品种的蒟蒻 L1-7 谷歌的招聘 题目详情 - L1-7 谷歌的招聘 (pintia.cn) 自己写半天都是Segmentation Fault&#xff0c; 学习一下几个函数叭// 1.substr&#xff08;&#xff09;函数 获取子串 #include<bits/st…

OpenCV 安卓编程示例:1~6 全

原文&#xff1a;OpenCV Android Programming By Example 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线的时候&#xff0c;…

国产AI软件,10年前已出现,Excel表格变软件,用友用户:有救了

10年前&#xff0c;国产AI软件已经出现 在国内&#xff0c;我们早在10年就已经有AI软件&#xff0c;而且现在还在使用。 10年前&#xff0c;这款软件跟现在市面上流行的ChatGPT和文心一言相比&#xff0c;最为先进的是&#xff1a;不根本用写代码&#xff0c;只要会画表格就可…

【Docker01】入门

目录 概述 Docker平台 Docker可以做什么 快速、一致地交付应用程序 响应式部署和扩展 在同一硬件上运行更多工作负载 Docker架构 Docker守护程序&#xff08;The Docker daemon&#xff09; Docker客户端&#xff08;The Docker client&#xff09; Docker桌面&#x…

KingSCADA3.8保姆级安装教程

大家好&#xff0c;我是雷工&#xff01; 最近开始学习KingSCADA&#xff0c;今天这篇详细记录安装KingSCADA3.8的过程。 首先下载需要的安装版本&#xff0c;此处以从官网下载的最新版本KingSCADA3.8为例&#xff0c;双击&#xff1a;Setup.exe ; 一、安装主程序 1、点击“…

电脑端(PC)按键精灵2013——入门小白 详细 教程

电脑端(PC)按键精灵——1.入门详细说明&#xff1a; 本篇幅介绍的按键精灵的下载和安装&#xff1b;如果已经安装则直接看下面命令内容 电脑端(PC)按键精灵——2.键盘命令和鼠标命令 电脑端(PC)按键精灵——3其他命令 电脑端(PC)按键精灵——4.控制命令&#xff08;判断、循…