将命令的 stderr 从构建任务传递到 Azure DevOps

2024-04-06

我有一个 VSTS (Azure DevOps) 版本,其中包含电源外壳 or a 命令行任务。该任务正在运行一些程序:program.exe. When program.exe返回非零退出代码,构建按预期失败。program.exe还打印详细的错误消息到stderr发生错误时流。

问题是内容stderr流不会传递到构建。该任务始终返回以下错误消息,该消息也显示为构建摘要选项卡上的构建失败消息:

进程已完成,退出代码为 1。

这是没用的。用户必须查找失败的任务,打开其输出并在那里搜索错误消息。这不太方便。

如何轻松传递内容stderr到构建?

我必须手动捕获吗stderr然后使用 PowerShell 将其发送到构建,或者是否有设置可以更改构建行为以按我的预期工作?


我刚刚添加了“2>&1 | Write-Host" 到命令,以便 stderr 流将被路由到 Write-Host 流。参考此线程:VSTS 构建失败,并显示“进程已完成,退出代码为 0,并且已将 3 个错误写入错误流。”即使我将 PowerShell 脚本设置为忽略错误 https://developercommunity.visualstudio.com/comments/86161/view.html

您也可以尝试取消选中Fail on Standard Error在您的 PowerShell 脚本配置中并编写lastexitcode来传递任务:

标准错误失败

如果这是真的,如果写入任何错误,则此任务将失败 错误管道,或者是否有任何数据写入标准错误 溪流。否则该任务将仅依赖于 $LASTEXITCODE 和 退出代码以确定失败。

然后,您可以使用 PowerShell 或 VSTS 任务命令输出错误或警告。

Write-Warning “warning”
Write-Error “error”
Write-Host " ##vso[task.logissue type=warning;]this is the waring"
Write-Host " ##vso[task.logissue type=error;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]this is an error "

更多关于VSTS任务命令的信息,可以参考:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将命令的 stderr 从构建任务传递到 Azure DevOps 的相关文章

随机推荐