Azure devops 记录错误但管道通过时管道失败

Azure devops 记录错误但管道通过时管道失败,azure-devops,yaml,build-pipeline,Azure Devops,Yaml,Build Pipeline,我正在寻找一种方法,在记录任何错误时,使构建管道失败。我发现了许多情况(npm、单元测试和其他),当异常/错误/问题发生时,会导致管道中记录并显示错误,但构建管道会成功(没有人觉得需要检查细节,因为管道通过并显示绿色成功,这就是问题所在) 三个任务(“脚本”、“Bash”、“Powershell”)具有选项“failOnStderr”(设置为true会使任何内容写入stderr时步骤失败),这似乎是解决此问题的精确方法,但其他任务(如“vstest”、“蛋糕构建”和其他)没有 “任务”的Yaml

我正在寻找一种方法,在记录任何错误时,使构建管道失败。我发现了许多情况(npm、单元测试和其他),当异常/错误/问题发生时,会导致管道中记录并显示错误,但构建管道会成功(没有人觉得需要检查细节,因为管道通过并显示绿色成功,这就是问题所在)

三个任务(“脚本”、“Bash”、“Powershell”)具有选项“failOnStderr”(设置为true会使任何内容写入stderr时步骤失败),这似乎是解决此问题的精确方法,但其他任务(如“vstest”、“蛋糕构建”和其他)没有

“任务”的Yaml方案不提供在记录错误时使任务失败的选项


感谢您的帮助:

对于此问题,有些情况可能会导致此问题。我在这里整理了几种情况和解决方法:

Npm:这意味着您的脚本“吞下”退出代码并正常退出。您需要在脚本中添加一个检查,以捕获
npm run lint的退出代码,并使用相同的退出代码退出,如:

- script: |
    npm install
    npm run lint # Mapped to `eslint src` in package.json
    if [ $? -ne 0 ]; then
        exit 1
    fi
    npm run slint # `stylelint src` in package.json
    npm run build
详情请参阅此页

测试:您可以尝试在任务输入中添加
failTaskOnFailedTests:true
,例如:

- task: PublishTestResults@2
  inputs:
    testRunner: VSTest
    testResultsFiles: '**/*.trx'
    failTaskOnFailedTests: true
详情请参阅此页

任务版本本身的缺陷也可能导致这种现象。在这种情况下,要么是循环符号链接,要么就是原始路径中的文件太多,而查看这些文件的助手失败了。该错误是报告成功的帮助程序。这个问题的最终结果是用任务库的更新版本更新了
Maven任务

此外,如果使用自托管代理运行生成管道,则较旧版本的代理也可能导致这种情况。解决方案是将代理更新到最新版本。有关详细信息,请参阅


希望这有帮助。

谢谢您的回答,npm问题现在已经解决了。不幸的是,我正在使用VSTest@2它会自动发布测试结果。您知道如何解决此任务的此问题吗?当抛出异常时会发生错误,它会导致跳过测试,所以vstest认为一切正常。