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

Fail pipeline when error is logged but pipeline pass

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

三个任务('script'、'Bash'、'Powershell')有选项 "failOnStderr"(设置为 true 使得在向 stderr 写入任何内容时步骤失败)这似乎是这个问题的确切解决方案,但其他任务(如 'vstest'、'cake build' 和其他)没有。

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

感谢您的帮助:]

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

Npm :这意味着您的脚本 "swallows" 退出代码并正常退出。您需要在脚本中添加一个检查,以捕获 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

详情请参考此case

任务本身的版本缺陷也可能导致这种现象。在此 case 中,原始路径中存在循环符号链接或文件过多,导致查看文件的助手失败。该错误是帮助者报告的成功。这个问题通过使用更新版本的任务库更新 Maven task 而结束。

此外,如果您使用自托管代理运行构建管道,旧版本的代理也可能导致这种情况。解决方案是将代理更新到最新版本。详情可参考this

希望对您有所帮助。