1

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

三个任务('script'、'Bash'、'Powershell')具有选项“failOnStderr”(设置为 true 会在将任何内容写入 stderr 时使步骤失败),这似乎是解决此问题的准确方法,但其他任务(如 ' vstest'、'cake build' 等)没有。

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

谢谢您的帮助 : ]

4

1 回答 1

1

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

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 task使用更新版本的任务库更新。

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

希望这可以帮助。

于 2020-01-22T10:04:27.620 回答