我在R中使用lintr库在代码中查找棉绒问题。我将它们放入这样的xml格式:
<lintsuites>
<lintissue filename="/home/.../blah.R" line_number="36" column_number="1" type="style" message="Trailing blank lines are superfluous."/>
<lintissue filename="/home/.../blahblah.R" line_number="1" column_number="8" type="style" message="Only use double-quotes."/>
</lintsuites>
现在,当发生此类问题时,我想使Azure devops构建失败。
我能够以这样的JUnit格式进行测试:
<testsuite name="MB Unit Tests" timestamp="2020-01-22 22:34:07" hostname="0000" tests="29" skipped="0" failures="0" errors="0" time="0.05">
<testcase time="0.01" classname="1_Unit_Tests" name="1_calculates_correctly"/>
<testcase time="0.01" classname="1_Unit_Tests" name="2_absorbed_correctly"/>
...
</testsuite>
当我在azure管道中执行此步骤时,如果测试套件中的任何测试失败,我的构建也会失败:
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFiles: '**/*.xml'
searchFolder: '$(System.DefaultWorkingDirectory)/fe'
mergeTestResults: true
failTaskOnFailedTests: true
在出现棉绒问题时,我希望通过类似的操作使构建失败。我还希望用户看到构建输出中的那些棉绒问题。 谢谢
答案 0 :(得分:0)
对于使用plishTestResults@2
的lintr xml,不可能获得类似的结果。
您可以尝试的解决方法是使用powershell任务来检查lintr xml文件的内容。如果内容不为空,则在powershell任务中使管道失败。
下面的powershell任务将检查lintr.xml(<car></car>
)的内容,并将该内容回显到任务日志中,如果内容为null,则exit 1
将使任务失败。
- powershell: |
[xml]$XmlDocument = Get-Content -Path "$(system.defaultworkingdirectory)/lintr.xml"
if($XmlDocument.OuterXml){
echo $XmlDocument.OuterXml
}else{exit 1}
displayName: lintr result.
您还可以在Powershell任务中使用以下语句将lintr xml文件上传到构建摘要页面,从中可以下载
echo "##vso[task.uploadsummary]$(system.defaultworkingdirectory)/lintr.xml"
您可以检查here了解更多日志记录命令。
更新:
一种以良好方式显示lintr结果的解决方法是创建一个自定义扩展名,以在azure devops管道中显示html结果。
您可以尝试创建自定义扩展名,并产生html皮棉结果。请参考该线程an example custom extension to display html的答案
其他开发人员已经向Microsoft提交了实施此功能的请求。请投票给here或创建一个新的
。