如何使用 jenkins pipeline 发布 dotnet core 测试?

Avi*_*ger 5 .net nunit jenkins .net-core jenkins-pipeline

我正在尝试使用 jenkins-pipeline 发布测试结果,

使用这个管道脚本,我设法完成构建并生成“xml”输出:

node {
stage 'Checkout'
    checkout scm

stage 'Build'
    bat "\"C:/Program Files/dotnet/dotnet.exe\" restore \"${workspace}/MyProg.sln\""
    bat "\"C:/Program Files/dotnet/dotnet.exe\" build \"${workspace}/MyProg.sln\""

stage 'UnitTests'
    bat returnStatus: true, script: "\"C:/Program Files/dotnet/dotnet.exe\" test \"${workspace}/MyProg.sln\" --logger \"trx;LogFileName=unit_tests.xml\" --no-build"
    nunit testResultsPattern: 'Tests\\*Test*\\TestResults\\unit_tests.xml'
}
Run Code Online (Sandbox Code Playgroud)

但在“UnitTest”阶段我收到此错误:

“发布 NUnit 测试结果报告无法读取 XSL XML 文件。请将此问题报告给插件作者”

当我使用“正常”步骤构建(没有管道框架)时,测试就会发布。使用:

  • 点网核心2.0
  • 詹金斯 2.111
  • NUnit 插件 0.23

附上 XML 之一:

node {
stage 'Checkout'
    checkout scm

stage 'Build'
    bat "\"C:/Program Files/dotnet/dotnet.exe\" restore \"${workspace}/MyProg.sln\""
    bat "\"C:/Program Files/dotnet/dotnet.exe\" build \"${workspace}/MyProg.sln\""

stage 'UnitTests'
    bat returnStatus: true, script: "\"C:/Program Files/dotnet/dotnet.exe\" test \"${workspace}/MyProg.sln\" --logger \"trx;LogFileName=unit_tests.xml\" --no-build"
    nunit testResultsPattern: 'Tests\\*Test*\\TestResults\\unit_tests.xml'
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

还尝试过:

step([$class: 'NUnitPublisher', testResultsPattern: 'Tests\\FilesScannerTests\\TestResults\\unit_tests.xml', debug: false, keepJUnitReports: true, skipJUnitArchiver:false, failIfNoResults: true])
Run Code Online (Sandbox Code Playgroud)

但它也没有成功..

Avi*_*ger 4

我设法使用“ MSTestPublisher ”类来做到这一点,

所以最终的管道是:

node {
stage 'Checkout'
    checkout scm

stage 'Build'
    bat "\"C:/Program Files/dotnet/dotnet.exe\" restore \"${workspace}/MyProg.sln\""
    bat "\"C:/Program Files/dotnet/dotnet.exe\" build \"${workspace}/MyProg.sln\""

stage 'UnitTests'
    bat returnStatus: true, script: "\"C:/Program Files/dotnet/dotnet.exe\" test \"${workspace}/MyProg.sln\" --logger \"trx;LogFileName=unit_tests.xml\" --no-build"
    step([$class: 'MSTestPublisher', testResultsFile:"**/unit_tests.xml", failOnError: true, keepLongStdio: true])
}
Run Code Online (Sandbox Code Playgroud)

我把自己制作的一些例子上传到了我的GitHub上,供大家使用和贡献,欢迎查看:

https://github.com/avrum/JenkinsFileFor.NETCore

这些 pipline jenkinsfile 会将此 pipline 模板添加到您的构建中:

Jenkins 管道示例|Solid