【问题标题】:How to make azure devops build fail when R linting issues occur发生 R linting 问题时如何使 azure devops 构建失败
【发布时间】:2020-01-23 19:03:04
【问题描述】:

我在 R 中使用 lintr 库来查找代码中的 linting 问题。我把它们变成了这样的 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

当出现 linting 问题时,我想要类似的东西来使构建失败。我还希望用户查看构建输出中的这些 linting 问题。 谢谢

【问题讨论】:

    标签: r azure-devops lintr


    【解决方案1】:

    这对于使用plishTestResults@2 的lintr xml 是不可能实现的。

    您可以尝试的解决方法是使用 powershell 任务来检查 lintr xml 文件的内容。如果内容不为空,则使 powershell 任务中的管道失败。

    powershell 任务将检查 lintr.xml(&lt;car&gt;&lt;/car&gt;) 的内容,并将内容回显到任务日志和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 lint 结果。请参考本帖回复an example custom extension to display html

    其他开发人员已经向 Microsoft 提交了实施此功能的请求。请投票here 或创建一个新的。

    【讨论】:

    • 是的。多谢。因为我在 Linux 环境中工作,所以我编写了一个 bash 任务而不是一个 powershell 任务。但是,我很想知道如何以一种很好的方式查看 lint 问题的结果。我唯一能想到的就是将生成的 xml 作为工件发布。
    • 有一种方法可以创建自定义扩展来显示 lint xml。检查我的更新。
    • 嗨@Wanderer,您是否查看了上述更新并尝试使用自定义扩展,效果如何?
    • 没有。没有机会尝试。
    • 嗨@Wanderer,如果你有时间测试它,请随时告诉我它的进展情况。
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2022-08-17
    • 2019-08-30
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多