Jfrog 与 jenkins Sonarqube的 测试样例 (From jfrog 培训)

1. 获取jfrog 仓库地址 sonar的地址 jenkins的地址.

本次例子的地址为:

jenkins地址:http://10.24.101.99:8080/
artifactory地址: http://10.24.101.99:8081/artifactory
sonar的地址:http://10.10.9.36:9000/
sonar自己一会儿安装一个

2. 进行配置,首先在 系统管理-系统设置 中增加sonar的服务器的地址

如图示:

服务器session的值为: 

ffb8d267e6f0eb2fdbbcabbb097cebb0b7fbaa76

3 在系统管理-全局工具配置中 增加sonarqube的值

这一块 需要与 groovy中的脚本关联起来 才可以用.

4. 设置完成之后 创建 pipeline 

与上面一个 基本相同.

将测试用的脚本放进去 ,并且取消掉 沙盒运行

import groovy.json.JsonOutput
import groovy.json.JsonSlurperClassic 

node {
    def server = Artifactory.newServer url: SERVER_URL, credentialsId: CREDENTIALS
    def rtMaven = Artifactory.newMavenBuild()

    stage 'Build'
        git url: 'https://github.com/wj20160308/project-examples.git'

    

    stage 'Artifactory configuration'
        
        rtMaven.tool = MAVEN_TOOL // Tool name from Jenkins configuration
        rtMaven.deployer releaseRepo:'zhaobsh_mvn_release_local', snapshotRepo:'zhaobsh_mvn_snapshot_local', server: server
        rtMaven.resolver releaseRepo:'libs-release', snapshotRepo:'libs-snapshot', server: server
        rtMaven.deployer.addProperty("unit-test", "pass").addProperty("qa-team", "platform", "ui")
        def buildInfo = Artifactory.newBuildInfo()
        buildInfo.env.capture = true

    stage 'Exec Maven'
        rtMaven.run pom: 'maven-example/pom.xml', goals: 'clean install', buildInfo: buildInfo
        
    stage 'sonar'
     def scannerHome = tool 'sonarqube';
     
        withSonarQubeEnv('sonar') {
            echo "${scannerHome}"
        
            sh "${scannerHome}/bin/sonar-scanner  -Dsonar.projectKey=${JOB_NAME} -Dsonar.projectName=${JOB_NAME}  -Dsonar.projectVersion=${BUILD_NUMBER}  -Dsonar.sources= "
            //sh "mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar"
        }
       
    stage 'Publish & Scan'
    
        manager.envVars['RELEASE_VERSION'] = RELEASE_VERSION ; 
        def releaseVersion = RELEASE_VERSION;
        def warVersion = releaseVersion;
        manager.listener.logger.println(manager.envVars['RELEASE_VERSION'] );
        
        def curlstr="curl -uadmin:AKCp5aUjBmuJPiBcGcjvYDWi7jrgWESiMyKKw1qb28aevmeZoSYWPNg8tkZyUzZyZF5RxyNL5 \'http://10.10.9.33/artifactory/"
        def warverstr= curlstr +  "api/search/latestVersion?g=org.jfrog.test&a=multi3&repos=wangj-snapshots-local&v=${releaseVersion}\'"; 
        echo   warverstr  
        warVersion = ["bash","-c",warverstr].execute().text
        echo warVersion

        //获取sonar扫描结果
        def getSonarIssuesCmd = "curl  GET -v http://10.10.9.36:9000/api/issues/search?componentRoots=${JOB_NAME}";
        echo getSonarIssuesCmd
        process = [ 'bash', '-c', getSonarIssuesCmd].execute().text

        

        //增加sonar扫描结果到artifactory
        echo process
        //def issueMap = jsonSlurper.parseText(process);
        def issueMap = jsonParse(process);
        commandText = "curl  -X PUT \"http://10.10.9.33/artifactory/api/storage/wangj-snapshots-local/org/jfrog/test/multi3/"+releaseVersion+"-SNAPSHOT/multi3-"+releaseVersion + warVersion+".war?properties=qulity.gate.sonarUrl=http://47.93.114.82:9000/dashboard/index/jfrog:multi3;qulity.gate.sonarIssue="+issueMap.total+"\" -uadmin:AKCp5aUjBmuJPiBcGcjvYDWi7jrgWESiMyKKw1qb28aevmeZoSYWPNg8tkZyUzZyZF5RxyNL5";
        
        echo commandText
        process = [ 'bash', '-c', commandText].execute().text
    
        step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
        if (reportOnTestsForBuild ()) {
            currentBuild.result = 'UNSTABLE'
        }
        server.publishBuildInfo buildInfo
}

@NonCPS
def reportOnTestsForBuild () {
    def failedTests = []
    def build = manager.build
    if (build.getAction(hudson.tasks.junit.TestResultAction.class) == null) {
        println "No Tests"
        return true
    }
    def result = build.getAction(hudson.tasks.junit.TestResultAction.class).result
    if ((result == null)) {
        println "No test results"
        return true
    } else {
        println "Failed test count: " + result.getFailCount()
        println "Passed test count: " + result.getPassCount()
        failedTests = result.getFailedTests()
        failedTests.each { test ->
            println test.name
        }
        return (result.getFailCount())
    }
}
@NonCPS
def jsonParse(def json) {
    new groovy.json.JsonSlurperClassic().parseText(json) }

放置位置

选择 参数化 构建过程

增加参数 与后面的groovy脚本对应

首先增加 artifactory 的地址

增加的参数为:

以及进行 MAVEN_TOOL的设置

进行添加

后续还要添加的参数有 

sonarqube 值就为 刚才设置的系统设置变量名字
RELEASE_VERSION 定义一个任意数据即可

进行处理即可.

这里需要在aritifactory 中创建 仓库 比较简单 上一个blog中 已经说明过了. 不在阐述.

猜你喜欢

转载自www.cnblogs.com/jinanxiaolaohu/p/9202551.html