持续集成交付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项目

相关推荐
小白鸽i10 小时前
【LINUX】将源码驱动文件编译并生效
linux·运维·服务器
做萤石二次开发的哈哈10 小时前
萤石开放平台 音视频 | 产品概述
运维·服务器·萤石云·萤石·萤石开放平台
0思必得010 小时前
[Web自动化] 处理爬虫异常
运维·爬虫·python·selenium·自动化·web自动化
China_Yanhy11 小时前
我的区块链运维日记 · 第 4 日:死掉的“活”节点 —— 攻克“同步滞后(Lag)”
运维·区块链
kida_yuan12 小时前
【Linux】说说我对 Wine 与 deepin-wine 的理解
linux·运维·wine
松涛和鸣12 小时前
DAY63 IMX6ULL ADC Driver Development
linux·运维·arm开发·单片机·嵌入式硬件·ubuntu
扑火的小飞蛾12 小时前
RHEL 7 安装 Docker 过程总结
运维·docker·容器
程序员_大白13 小时前
区块链部署与运维,零基础入门到精通,收藏这篇就够了
运维·c语言·开发语言·区块链
德迅云安全—珍珍13 小时前
2核2G的云服务器可以架设游戏吗?
运维·服务器·游戏
卓码软件测评14 小时前
第三方CNAS/CMA软件测试测评机构【LoadRunner的JSON和XML响应数据的关联和处理技巧】
测试工具·ci/cd·性能优化·单元测试·测试用例