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

目录

一、实验

[1.SonarQube REST API 查找项目](#1.SonarQube REST API 查找项目)

[2.SonarQube REST API 新增项目](#2.SonarQube REST API 新增项目)


一、实验

1.SonarQube REST API 查找项目

(1)Postman测试

转换成cURL代码

(2)Jenkins添加凭证

(3)修改流水线

bash 复制代码
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)修改流水线

bash 复制代码
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项目

相关推荐
努力的小T22 分钟前
基于 Bash 脚本的系统信息定时收集方案
linux·运维·服务器·网络·云计算·bash
夜光小兔纸44 分钟前
Oracle 普通用户连接hang住处理方法
运维·数据库·oracle
爱敲代码的边芙1 小时前
Linux:信号的保存[2]
linux·运维·服务器
阿俊仔(摸鱼版)1 小时前
Python 常用运维模块之OS模块篇
运维·开发语言·python·云服务器
工程师焱记1 小时前
Linux 常用命令——系统设置篇(保姆级说明)
linux·运维·服务器
chian-ocean2 小时前
探索Linux中的进程控制:从启动到退出的背后原理
linux·运维·服务器
华纳云IDC服务商2 小时前
常见的备份服务器操作系统如何选择
运维·服务器
wanhengidc2 小时前
网站服务器出现延迟的原因是什么?
运维·服务器
van叶~3 小时前
Linux探秘坊-------5.git
linux·运维·git
2401_840192273 小时前
OpenStack基础架构
运维·服务器·openstack