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中 已经说明过了. 不在阐述.

Jfrog 与 jenkins Sonarqube的 测试样例 (From jfrog 培训)的更多相关文章

  1. hdu 1003 MAX SUM 简单的dp,测试样例之间输出空行

    测试样例之间输出空行,if(t>0) cout<<endl; 这样出最后一组测试样例之外,其它么每组测试样例之后都会输出一个空行. dp[i]表示以a[i]结尾的最大值,则:dp[i ...

  2. YOLOv4 资源环境配置和测试样例效果

    YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...

  3. PAT 1032 挖掘机技术哪家强(20)(有测试样例)

    1032 挖掘机技术哪家强(20)(20 分) 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10 ...

  4. PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)

    1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...

  5. MapReduce计算每年最大值测试样例生成程序

    Demo.java package com.java; import java.io.BufferedWriter; import java.io.File; import java.io.FileW ...

  6. 第一次个人项目【词频统计】——测试样例分析&性能分析

    [空文件测试](认为空文件行数为0) [基本测试] [大小写测试] 可以看出abcd同类型的词出现了三次,而单词树中存储的是ABCd,满足大小写要求. [复杂文件测试] 前三项数据比较接近,但是单词和 ...

  7. 不同标准下的C语言常量范围的默认类型的检测 (测试样例为C90与C99)

    不同标准下的C语言常量范围的默认类型的检测 一.C90与C99标准下的不同常量范围的默认类型     C90标准下对不同常量范围默认类型的检测实现及运行结果: C99标准下对不同范围默认类型的检测实现 ...

  8. Swift - 加速传感器(CoreMotion)的用法,小球加速运动并反弹样例

    1,加速传感器可以监听到x,y,z三个方向的加速度,使用步骤如下: (1)实例化CMMotionManager类 (2)向CMMotionManager的accelerometerUpdateInte ...

  9. Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

    转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...

随机推荐

  1. mysql索引优化-order/group

    为排序使用索引 KEY a_b_c (a,b,c) order by 能使用索引最左前缀 -order by a -order by a,b -order by a,b,c -order by a d ...

  2. MYSQL中的int(11)到底代表什么意思?

    对于int类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的int(11)代表什么意思,很长时间以来我都以为这代表着限制int的长度为11位,直到有天看到篇文章才明白,11代表的并不是长 ...

  3. Arduino IDE for ESP8266 (4)局域网 网页图形化控制灯 路由系统

    用到的路由系统文件(备用) 链接:https://pan.baidu.com/s/1bqR7Lc7 密码:7w2z 教程http://www.windworkshop.cn/?p=1274

  4. oracle 索引的几种方式

    一.查询索引的高度 select index_name,blevel,leaf_blocks,num_rows,distinct_keys,clustering_factorfrom user_ind ...

  5. linux计划任务(转)

    文章转自https://blog.csdn.net/jixieyang3701/article/details/79410725 linux 系统则是由 cron (crond) 这个系统服务来控制的 ...

  6. Qt中 .pro 文件和 .pri 文件简介

    *.pro 这是一个典型的Qt示例程序的.pro文件(propriprfprl.pro): TEMPLATE = app CONFIG += QT QT += core gui TARGET = pr ...

  7. centos7搭建logstash

    前两节已经成功完成ek的搭建,还剩最后的一个日志上传的功能 依次执行如下命令 cd /home/elk wget https://artifacts.elastic.co/downloads/logs ...

  8. php和js字符串的acsii码函数

    简单普及下编码知识: javascript中有charCodeAt(),根据字符查找ascii码. String.fromCharCode(),根据ascii码查找对应的字符. console.log ...

  9. 使用yield返回IEnumber<T>集合

    yield是对一种复杂行为的简化,就是将一段代码简化为一种简单的形式. 先看一下常规的写法,下面例子中,把找出字符串阵列中,某些元素包含有某些字符的元素. class Bi { public stri ...

  10. 解决RobotFramework的关键字不能高亮的问题

    一个可能的原因:路径中存在汉字,RobotFramework对这方面运行的不太好.