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

持续集成交付CICD: Sonarqube REST API 查找与新增项目

目录

一、实验

1.SonarQube REST API 查找项目

2.SonarQube REST API 新增项目


一、实验

1.SonarQube REST API 查找项目

(1)Postman测试

转换成cURL代码

(2)Jenkins添加凭证

(3)修改流水线

pipeline {agent { label "build"}stages {stage("Sonar"){steps{script {projectName = "devops03-maven5-service"if (SearchProject(projectName)){println("${projectName} exist")} else {println("${projectName} not fonud")}}}}}
}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}

(4)任意项目中回放进行测试

(5)成功


 

2.SonarQube REST API 新增项目

(1)Postman测试

(2)发送转换成cURL代码

(3)Sonarqube已新增go项目

(4)修改流水线

pipeline {agent { label "build"}stages {stage("Sonar"){steps{script {
//                    projectName = "devops03-maven5-service"projectName = "devops03-gradle-service"if (SearchProject(projectName)){println("${projectName} exist")} else {println("${projectName} not fonud")//项目不存在CreateProject(projectName)}}}}}
}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}
}

(5)任意项目中回放进行测试

(6)成功

(7)Sonarqube已新增gradle项目

http://www.lryc.cn/news/257329.html

相关文章:

  • 分层网络模型(OSI、TCP/IP)及对应的网络协议
  • 如何衡量和提高测试覆盖率?
  • AWS Ubuntu设置DNS解析(解决resolve.conf被覆盖问题)
  • 学会这些可以升职加薪!EXCEL基础函数入门【一】
  • kubeadm搭建1.20.7版本k8s
  • LeetCode 力扣: 寻找两个正序数组的中位数 (Javascript)
  • 第 4 部分 — 增强法学硕士的安全性:对越狱的严格数学检验
  • Next.js 中的中间件
  • 一、C#笔记
  • 井盖发生位移怎么办?智能井盖传感器效果
  • go-zero 开发之安装 goctl 及 go-zero 开发依赖
  • win11 CUDA(12.3) + cuDNN(12.x) 卸载
  • 037.Python面向对象_关于抽象类和抽象方法
  • 华为OD机试真题-5G网络建设-2023年OD统一考试(C卷)
  • 【Spring教程25】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC入门案例总结与SpringMVC工作流程分析
  • 设计模式再探——装饰模式
  • 【Python必做100题】之第一题(求两数相加)
  • java面试-Dubbo和zookeeper运行原理
  • Rsync+Sersync
  • Leetcode刷题笔记题解(C++):25. K 个一组翻转链表
  • 从线性回归到神经网络
  • LANDSAT_7/02/T1/RAW的Landsat7_C2_RAW类数据集
  • 绕过360给目标机器添加账户
  • C/C++ 题目:给定字符串s1和s2,判断s1是否是s2的子序列
  • Nginx的stream配置
  • ubuntu 20.04 server 安装 zabbix
  • hive映射es表任务失败,无错误日志一直报Task Transitioned from NEW to SCHEDULED
  • 手眼标定 - 最终精度和误差优化心得
  • pytorch一致数据增强
  • MapReduce