定义要获取的指标   

testFailCount、testSkipCount、testTotalCount。分别为测试失败用例总数、跳过的测试用例总数和用例总数。获取到这些指标后就能对单个项目的单元测试设置一下度量指标。(单元测试覆盖率可以在SonarQube平台获取)


获取指标数据的接口

我之前第一想法是通过日志获取到这些数据,但并没有简单的插件能够完成。BlueOcean上面有测试数据相关的接口,貌似可以获取数据(但是我并没有获取到~)于是直接使用jenkins的json api尝试获取,果然是有的,只要应用了单元测试(junit)的项目都会有这个类和相对应的数据指标。


  一起调试接口  

接口地址: ${JOB_URL}${BUILD_ID}/api/json?pretty=true接口返回:[_class, actions, artifacts, building, description, displayName, duration, estimatedDuration, executor, fullDisplayName, id, keepLog, number, queueId, result, timestamp, url, changeSets, culprits, nextBuild, previousBuild]
测试数据:{"_class":"hudson.tasks.junit.TestResultAction","failCount":0,"skipCount":0,"totalCount":1,"urlName":"testReport"}


  一起编写Jenkinsfile  

node("xxxxx"){    def testsFailCount = "0"    def testSkipCount = "0"    def testTotalCount = "0"    response =  httpRequest ignoreSslErrors: true,  url: "${JOB_URL}${BUILD_ID}/api/json?pretty=true"   //println(response.content)   response = response.content   //使用json方法偶尔出现序列化问题,果断采用readJSON   def info = readJSON text: """${response}"""   //println(info.keySet())   //println(info["actions"])    for (cls in  info["actions"]){       if (cls.get("_class")){           if (cls["_class"] == "hudson.tasks.junit.TestResultAction"){                println(cls)                testsFailCount = cls["failCount"]                testSkipCount = cls["skipCount"]                testTotalCount = cls["totalCount"]           }       }   }    println([testsFailCount,testSkipCount,testTotalCount])}