将命令的stderr从生成任务传递到Azure DevOps

Daw*_*žan 5 build stderr azure-devops

我有一个VSTS(Azure DevOps)构建,其中包含PowerShell命令行任务。此任务正在运行一些程序:program.exe。当program.exe返回非零退出代码时,生成将按预期失败。program.exe如果发生错误,还会将详细的错误消息打印到stderr流中。

问题在于stderr流的内容没有传递给构建。该任务始终返回以下错误消息,该错误消息在生成摘要选项卡上也显示为生成失败消息:

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

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

如何轻松地将的内容传递stderr给构建?

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

And*_*SFT 3

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

\n\n

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

\n\n

在此输入图像描述

\n\n
\n

标准错误失败

\n\n

如果这是 true,则如果将任何错误写入\n 错误管道,或者将任何数据写入\n 标准错误流,则此任务将失败。否则,任务将仅依赖 $LASTEXITCODE 和\n 退出代码来确定失败。

\n
\n\n

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

\n\n
Write-Warning \xe2\x80\x9cwarning\xe2\x80\x9d\nWrite-Error \xe2\x80\x9cerror\xe2\x80\x9d\nWrite-Host " ##vso[task.logissue type=warning;]this is the waring"\nWrite-Host " ##vso[task.logissue type=error;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]this is an error "\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n