你可以使用 Jenkins Pipeline 解析 TAP 格式吗?

Posted

技术标签:

【中文标题】你可以使用 Jenkins Pipeline 解析 TAP 格式吗?【英文标题】:Can you parse TAP format using Jenkins Pipeline? 【发布时间】:2017-06-22 12:03:51 【问题描述】:

我正在尝试解析 BATS 脚本 (https://github.com/gaia-adm/docker-bench-test) 的输出,该脚本输出为 TAP 格式。我稍微修改了脚本以涵盖 CIS 1.13 而不是 1.11,但我不知道如何让 Jenkins Pipeline 处理该输出。

我知道有一个用于 TAP 格式的 Jenkins 插件,但我认为这不适用于 Jenkins Pipeline Groovy 脚本。

【问题讨论】:

【参考方案1】:

@Grab 仅在您的 jenkins 可以访问互联网时才能工作

workspace/job_name/tap.groovy

@Grab(group='org.tap4j', module='tap4j', version='4.2.1')

import org.tap4j.consumer.TapConsumerFactory

def parse(def src)
    return TapConsumerFactory.makeTap13Consumer().load(src)


return this

workspace/job_name/test.tap

1..3
ok 1 - no error
not ok 2 - io error
ok 3 - no error

管道脚本

node
    def tap = load 'tap.groovy'
    tap = tap.parse( readFile('test.tap') )
    echo  "Number of tests found : $tap.getNumberOfTestResults()"
    echo  "Test Set failed?      : $tap.containsNotOk()"

输出

Number of tests found : 3
Test Set failed?      : true

tap.parse()返回的对象:org.tap4j.model.TestSet

【讨论】:

【参考方案2】:

安装了 tap 插件后,我可以使用以下命令获取声明性管道脚本以显示来自 tap 文件的测试结果:

stage('publish test results') 
    steps 
        step([$class: "TapPublisher", testResults: "**/reports/*.tap"])
    

How do i use the "Publish TAP Results" plugin on Jenkins 2.0 Pipeline?

【讨论】:

以上是关于你可以使用 Jenkins Pipeline 解析 TAP 格式吗?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins pipeline的优点

09Jenkins:Pipeline 补充

在Jenkins2.X使用Pipeline执行python测试脚本

Jenkins的Pipeline脚本在美团餐饮SaaS中的实践

Jenkins Pipeline 远程调试(可以使用atom作IDE调试)

Jenkins- Jenkins的代理