记录错误但流水线通过时流水线失败

时间:2020-01-21 16:30:21

标签: azure-devops yaml build-pipeline

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

三个任务('script','Bash','Powershell')具有选项“ failOnStderr”(设置为true会使在将任何内容写入stderr时步骤失败),这似乎是该问题的确切解决方案,但其他任务(例如“ vstest”,“蛋糕制作”等)。

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

谢谢您的帮助:]

1 个答案:

答案 0 :(得分:1)

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

Npm :这意味着您的脚本“吞噬”了退出代码并正常退出。您需要在脚本中添加一条检查指令,以捕获private void Btn_AddToLibary_Click(object sender, RoutedEventArgs e) { sqlConnection.Open(); SqlCommand com = new SqlCommand("INSERT into tblPurchasedGames (UserID, GameID)" + "values(@UserID, @GameID)", sqlConnection); com.Parameters.AddWithValue("@UserID","UserID"); com.Parameters.AddWithValue("@GameID","GameID"); com.ExecuteNonQuery(); sqlConnection.Close(); } 的退出代码并使用相同的退出代码退出,例如:

npm run lint

有关详细信息,请参阅此case

测试:您可以尝试在任务输入中添加- 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

有关详细信息,请参阅此case

任务本身版本中的缺陷也可能导致此现象。在此case中,原始路径中有环形符号链接或文件太多,导致正在浏览文件的助手失败。该错误是帮助程序报告成功的。通过使用较新版本的任务库更新- task: PublishTestResults@2 inputs: testRunner: VSTest testResultsFiles: '**/*.trx' failTaskOnFailedTests: true ,结束了此问题。

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

希望这会有所帮助。