【问题标题】:How can I prevent TFS from failing a PowerShell step when an error is written to the error stream?当错误写入错误流时,如何防止 TFS 使 PowerShell 步骤失败?
【发布时间】:2017-11-17 12:30:36
【问题描述】:

我在 TFS 构建中有一个 PowerShell 步骤,它将错误写入错误流,因此构建失败。我想要忽略错误并继续成功的步骤。

进程以退出代码 0 完成,并有 1 个错误写入错误流。

我尝试在 TFS 中设置 Continue on error 选项,但这会导致“构建部分成功”状态,但我想要的是“成功”。

我也尝试将2>&1 > output.txt 添加到生成错误的行的末尾,但错误仍会写入 TFS 输出并且不会在文本文件中捕获。

我正在执行的命令是来自 TFS 2015 Power Tools 的 New-TfsChangeset cmdlet。

【问题讨论】:

  • 您好,我无法使用您的解决方案,也无法验证它是否有效,因为我们目前使用的是 TFS 2015。然而,我赞成它。为了解决这个问题,我禁用了在使用New-TfsChangeset 命令签入时出错的签入策略。 TFS 2015 Powertools 在签入政策方面存在缺陷。

标签: powershell tfs tfsbuild


【解决方案1】:

您可以在 PowerShell 脚本配置中取消选中 Fail on Standard Error 并编写 lastexitcode 以传递任务。

标准错误失败

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

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

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

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

【讨论】:

  • 这是一个 Powershell 构建步骤吗?我好像没有那个选项。我们正在使用 TFS 2015。
  • @GiddyUpHorsey 此选项适用于 TFS2017 update2RC 或 VSTS。在 TFS2015 上,如果将任何数据写入内置 powershell 步骤的标准错误流,恐怕它无法绕过它。您可能必须使用 Continue on error 选项。
  • 那很不幸。 Continue on error 在这种情况下没有帮助。 TFS 2015 Powertools 似乎无法在重定向错误流时正常工作。
  • Azure Powershell task下也无法更改
【解决方案2】:

以下脚本在 VSTS 中为我​​工作:

Write-Host "Running build script..."
&$CAKE_EXE $cakeArguments 2>&1 | Write-Host

我刚刚在命令中添加了"2>&1 | Write-Host",以便标准错误流将被路由到Write-Host流

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多