持续集成交付CICD:Sonarqube自动更新项目质量配置

news2024/11/30 15:32:06

目录

一、实验

1.Sonarqube手动自定义质量规则并指定项目

2.Sonarqube自动更新项目质量配置


一、实验

1.Sonarqube手动自定义质量规则并指定项目

(1)自定义质量规则

①新配置

②更多激活规则③根据需求激活相应规则④已新增配置

⑤ 查看

(2)修改质量设置(添加项目)

①点击质量配置

②修改项目

③搜索并添加

④开始扫描

⑤ 质量规则已切换为指定的devops03

(3)项目添加质量配置

①移除绑定的项目

②右上角项目配置-质量配置

③修改配置

④指定一个质量配置

⑤开始扫描

⑥质量规则已切换为指定的devops03

2.Sonarqube自动更新项目质量配置

(1)查看gradle项目质量配置为空

(2)Postman发送

(3)gradle项目已新增质量配置

(4)修改流水线

pipeline {

    agent { label "build"}

    stages {
        stage("Sonar"){
            steps{
                script {
                    projectName = "devops03-maven2-service"
                    lang = "java"
                    profileName = "devops03"
                   if (SearchProject(projectName)){
                       println("${projectName} exist")
                   } else {
                       //项目不存在
                       println("${projectName} not fonud")
                       //创建项目
                       CreateProject(projectName)
                       //质量配置
                       UpdateQualityProfiles(lang, projectName, profileName)
                   }

                }
            }
        }
    }
}

def SonarRequest(apiUrl,method){
    withCredentials([string(credentialsId: "855da77c-ad38-4f06-a941-3a5afcf6bbc6", variable: 'SONAR_TOKEN')]) {
        sonarApi = "http://192.168.204.8:9000/api"
        response = sh returnStdout: true,
                script: """
                 curl --location \
                 --request ${method} \
                 "${sonarApi}/${apiUrl}" \
                 --header "Authorization: Basic ${SONAR_TOKEN}"
                 """
        // json格式化
        try {
            response = readJSON text: """ ${response - "\n"} """
        } catch(e){
            response = readJSON text: """{"errors" : true}"""
        }
        return response

    }
}

//查找项目
def SearchProject(projectName){
    apiUrl = "projects/search?projects=${projectName}"
    response = SonarRequest(apiUrl,"GET")
    if (response.paging.total == 0){
        return false
    }
    return true

}

//创建项目
def CreateProject(projectName){
    apiUrl = "projects/create?name=${projectName}&project=${projectName}"
    response = SonarRequest(apiUrl,"POST")
    try{
        if (response.project.key == projectName ) {
            println("Project Create success!...")
            return true
        }
    }catch(e){
        println(response.errors)
        return false
    }
}

// 更新质量阈
def UpdateQualityProfiles(lang, projectName, profileName){
    apiUrl = "qualityprofiles/add_project?language=${lang}&project=${projectName}&qualityProfile=${profileName}"
    response = SonarRequest(apiUrl,"POST")

    if (response.errors != true){
        println("ERROR: UpdateQualityProfiles ${response.errors}...")
        return false
    } else {
        println("SUCCESS: UpdateQualityProfiles ${lang} > ${projectName} > ${profileName}" )
        return true
    }
}
               

(5)任意项目进入回放运行

(6)成功

(7)sonarqube已新增maven2项目

(8)并自动实现质量配置

(9)本地代码扫描

sonar-scanner -Dsonar.host.url=http://192.168.204.8:9000 \
-Dsonar.projectKey=devops03-maven2-service \
-Dsonar.projectName=devops03-maven2-service \
-Dsonar.projectVersion=1.2 \
-Dsonar.login=admin \
-Dsonar.password=Admin123 \
-Dsonar.ws.timeout=30 \
-Dsonar.projectDescription="my first project" \
-Dsonar.links.homepage=http://192.168.204.8:82/devops03/devops03-maven5-service \
-Dsonar.links.ci=http://192.168.204.15:8080/job/devops03/job/devops03-maven-service/ \
-Dsonar.sources=src \
-Dsonar.sourceEncoding=UTF-8 \
-Dsonar.java.binaries=target/classes \
-Dsonar.java.test.binaries=target/test-classes \
-Dsonar.java.surefire.report=target/surefire-reports

(10)maven2项目采用的质量阈为devops03

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

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

相关文章

自适应局部降噪滤波器的python实现-------冈萨雷斯数字图像处理

自适应局部降噪滤波器 自适应局部降噪滤波器是一种信号处理技术,用于降低图像或信号中的噪声水平,同时保留图像或信号的细节。其原理基于局部区域内信号的统计特性和噪声的特征,通过动态调整滤波器的参数来适应不同区域的信号和噪声属性。 自…

多平台展示预约的服装小程序效果如何

线下实体服装店非常多,主要以同城生意为主,但随着电商经济增长,传统线下自然流量变少,商家们会选择线上入驻平台开店获得更多线上用户,包括自建私域小程序等。 而除了直接卖货外,线上展示预约在服装行业也…

html通过CDN引入使用Vue和ElementUI

html通过CDN引入使用Vue和ElementUI 近期遇到个需求,就是需要在.net MVC的项目中,对已有的项目的首页进行优化,也就是写原生html和js。但是咱是一个写前端的,写html还可以,.net的话,开发也不方便&#xff0…

【开源】基于JAVA的APK检测管理系统

项目编号: S 038 ,文末获取源码。 \color{red}{项目编号:S038,文末获取源码。} 项目编号:S038,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 开放平台模块2.3 软…

Apache Flink(七):Apache Flink快速入门 - DataStream BATCH模式

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 下面使用Java代码使用DataStream…

784. 字母大小写全排列 dfs + 回溯算法 + 图解 + 笔记

784. 字母大小写全排列 - 力扣(LeetCode) 给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺序 返回输出 示例 1: 输入&#xf…

Meta开源最大多模态视频数据集—Ego-Exo4D

社交、科技巨头Meta联合15所大学的研究机构,经过两年多的努力发布了首个多模态视频训练数据集和基础套件Ego-Exo4D,用于训练和研究AI大模型。 据悉,该数据集收集了来自13个城市839名参与者的视频,总时长超过1400小时,包含舞蹈、足球、篮球、…

TCP实现一对一聊天

一,创建类 二,类 1.ChatSocketServer类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Sca…

Windows 下 PyTorch 入门深度学习环境安装与配置 GPU 版

1.确定自己的硬件信息,确定电脑有英伟达 (NVIDIA)显卡 在任务栏上右键打开任务管理器 2.下载安装 Anaconda (建议安装迅雷下载,同时浏览器添加扩展 “迅雷Chrome支持”) https://www.anaconda.com/ https://repo.anaconda.com/arc…

挑选数据可视化工具:图表类型、交互功能与数据安全

作为一名数据分析师,我经常需要使用各种数据可视化工具来将数据以直观、清晰的方式呈现出来,以便更好地理解和分析。在市面上的众多可视化工具中,我根据实际需求和项目特点进行选择。本文将从以下几个角度对市面上的数据可视化工具进行对比&a…

bert其他内容个人记录

Pre-training a seq2seq model BERT只是一个预训练Encoder,有没有办法预训练Seq2Seq模型的Decoder? 在一个transformer的模型中,将输入的序列损坏,然后Decoder输出句子被破坏前的结果,训练这个模型实际上是预训练一个…

2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍: Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ…

MySQL生僻字修改编码utf8mb4

1、查看你编码 SHOW VARIABLES WHERE Variable_name LIKE character_set_% OR Variable_name LIKE collation%;(如果不是下图则继续) 2、修改默认参数 /etc/my.cnf [mysqld] datadir/usr/local/mysql/data basedir/usr/local/mysql socket/usr/local/my…

Python内置类属性__str__的使用教程

概要 在Python中,每个类都有一些内置的特殊属性和方法,用于实现一些特殊的功能。其中一个特殊属性是__str__,它允许我们定义一个类的对象在打印时的输出格式。在本文中,我们将详细介绍__str__属性的使用教程,帮助读者…

MySQL:update set的坑

目录 一、问题描述 二、为何会出现这样的问题? 三、正确的方案 一、问题描述 我在修改mysql数据表时,看到下面的现象。 我表中原始数据如下: 执行了下面的修改,显示执行成功。 update user_function_record_entity set open_…

华为数通---配置ARP安全综合功能案例

简介 ARP(Address Resolution Protocol)安全是针对ARP攻击的一种安全特性,它通过一系列对ARP表项学习和ARP报文处理的限制、检查等措施来保证网络设备的安全性。ARP安全特性不仅能够防范针对ARP协议的攻击,还可以防范网段扫描攻击…

微信小程序 长按录音+录制视频

<view class"bigCircle" bindtouchstart"start" bindtouchend"stop"><view class"smallCircle {{startVedio?onVedio:}}"><text>{{startVedio?正在录音:长按录音}}</text></view> </view> <…

unity 2d 入门 飞翔小鸟 下坠功能且碰到地面要停止 刚体 胶囊碰撞器 (四)

1、实现对象要受重力 在对应的图层添加刚体 改成持续 2、设置胶囊碰撞器并设置水平方向 3、地面添加盒状碰撞器 运行则能看到小鸟下坠并落到地面上

排针排母是什么

排针排母 电子元器件百科 文章目录 排针排母前言一、什么是排针排母二、排针排母有哪些类别三、排针排母的应用实例四、排针排母的作用原理总结前言 排针排母连接器广泛应用于电子行业中,如电脑、手机、电视、打印机、工控设备等。它们提供了一种简单、可靠且灵活的连接解决方…

借助文档控件Aspose.Words,比较 Word、PDF 和 PPT 文档

在当今的数字时代&#xff0c;文档比较已成为一项重要任务&#xff0c;尤其是在法律、金融和合规相关行业。在比较 C# 中的文档时&#xff0c;Aspose API 提供了强大的解决方案。在这篇博文中&#xff0c;我们将探讨如何在 C# 中比较文档。分步指南和代码示例将演示如何比较两个…