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

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

目录

一、实验

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.lryc.cn/news/254227.html

相关文章:

  • Linux设置Docker自动创建Nginx容器脚本
  • 技术博客:Vue中各种混淆用法汇总
  • 【python】Python生成GIF动图,多张图片转动态图,pillow
  • python/matlab图像去雾/去雨综述
  • Docker+jenkins+gitlab实现持续集成
  • Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据
  • MySQL生成UUID并去除-
  • 包与字符串
  • 【Gradle】mac环境安装Gradle及配置
  • 使用C语言操作kafka ---- librdkafka
  • 误用STM32串口发送标志位 “USART_FLAG_TXE” “USART_FLAG_TC”造成的BUG
  • 指针(三)
  • labelimg遇到的标签修改问题:修改一张图像的标签时,保存后导致classes.txt改变
  • Spring Cloud Gateway使用和配置
  • RT-Thread 时钟管理
  • User: zhangflink is not allowed to impersonate zhangflink
  • 深入理解Sentinel系列-1.初识Sentinel
  • vue中字典的使用
  • AWS基于x86 vs Graviton(ARM)的RDS MySQL性能对比
  • ESP32 蓝牙音箱无法链接上电脑的解决:此项不起作用,请确保你的蓝牙设备仍可检测到
  • 会声会影2024软件还包含了视频教学以及模板素材
  • [Swift]RxSwift常见用法详解
  • 探索鸿蒙_ArkTs开发语言
  • 案例049:基于微信小程序的校园外卖平台设计与实现
  • 通过提示工程释放人工智能
  • 亚马逊云科技Serverless视频内容摘要提取方案
  • c语言:整数与浮点数在内存中的存储方式
  • dockerdesktop 导出镜像,导入镜像
  • 2-Django、Flask和Tornado三大主流框架对比
  • 【openssl】Window系统如何编译openssl