我正在寻找一种在记录任何错误时使构建管道失败的方法。我发现许多情况(npm,单元测试和其他情况),当发生异常/错误/问题时,导致管道记录并显示错误,但是在成功状态下构建管道结果(没有人需要检查详细信息,因为管道通过并显示绿色成功)那就是问题所在。
三个任务('script','Bash','Powershell')具有选项“ failOnStderr”(设置为true会使在将任何内容写入stderr时步骤失败),这似乎是该问题的确切解决方案,但其他任务(例如“ vstest”,“蛋糕制作”等)。
“任务”的Yaml方案不提供在记录错误时使任务失败的选项。
谢谢您的帮助:]
答案 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了解详情。
希望这会有所帮助。