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

news/2025/2/22 17:38:12/

文章目录

    • 一、前提配置
      • 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 anystages {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.ppmy.cn/news/48928.html

相关文章

[Eigen中文文档] 混叠

文档总目录 本文目录 示例解决混叠问题混叠与组件操作混叠和矩阵乘法总结 英文原文(Aliasing) 在 Eigen 中,混叠是指相同的矩阵(或数组或向量)出现在赋值操作符的左边和右边。如下表达式,mat 2*mat 或者 mat mat.transpose()。…

Openid Connect(OIDC)

一、是什么? OIDC(Identity, Authentication) OAuth 2.0。它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。 解决认证问题。 OIDC在OAuth2的access_token的基础上增加了身份认证信息, 通过公钥私钥配合校验获取身…

Unity-ML-Agents安装

目录 1.下载ML-Agents 1.1 前往官网 1.2 选择版本 1.3 下载文件 2.下载Anaconda 3.虚拟环境 3.1 构建虚拟环境 3.2 创建项目,导入package.json 3.2.1 创建项目,导入package.json 3.2.2 导入成功 3.2.3 将模板项目拖入unity项目中 3.3 开始训练 …

我们要被淘汰了?从科技变革看"ChatGPT"与"无代码开发"

现在只要一上网,就能看见GPT都在说“好厉害”、“太牛了”、“新技术要诞生了”、“我们人类要被淘汰了”之类的话题。 但是这伟大的技术变革到底给我们带来了什么呢?答案好像又比较模糊。现在ChatGPT的代写、问答,以及开始做的搜索、办公是目…

11. 图的入门

11. 图的入门 11.1 图的实际应用: ​ 在现实生活中,有许多应用场景会包含很多点以及点点之间的连接,而这些应用场景我们都可以用即将要学习的图这种数据结构去解决。 地图: ​ 我们生活中经常使用的地图,基本上是由…

基于Java+SpringBoot+vue+elementui药品商城采购系统详细设计实现

基于JavaSpringBootvueelementui药品商城采购系统详细设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联…

【Linux】-- 进程概念的引入

目录 硬件 冯诺依曼体系结构 冯诺依曼体系结构推导 重点概念 网络数据流向 软件 操作系统(Operator System - OS) 概念 定位 进程内核数据结构PCB(task_struct) 通过系统调用创建进程-fork初始 fork基本用法 使用if进行分流 查看运行效果 …

OpenCV 图像处理学习手册:1~5

原文:Learning Image Processing with OpenCV 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,…