TFS 2017 - 如何在发布的测试失败时构建失败

Ser*_*gei 3 powershell tfs continuous-integration build

我使用 CI/CD 演示在 TFS 2017 中有一个简单的构建过程,如https://msdn.microsoft.com/en-us/powershell/dsc/dsccicd 中所述

Build 定义包含四个步骤:

  • 运行 PowerShell 脚本。作为脚本的一部分,Pester 测试在代理上运行,结果使用 NUnit 格式保存到一个文件夹中
  • 使用该文件夹发布测试结果
  • 将文件复制到暂存目录
  • 发布工件

当 Pester 测试失败时,我希望整个构建失败。目前,即使已发布的测试结果显示为失败,构建仍会成功(在构建详细信息的问题部分)。我看不到如何强制整个构建失败查看构建定义参数。

Mar*_*agg 5

我没有使用 TFS,但在我的构建过程中,测试失败会通过输出错误触发构建失败。

这是通过将-PassThru开关添加Invoke-Peter到变量并将命令的结果发送到变量来完成的:

$TestResults = Invoke-Pester -Path .\Tests -PassThru
Run Code Online (Sandbox Code Playgroud)

然后如果有任何失败的测试写一个错误:

if($TestResults.FailedCount -gt 0)
{
    Write-Error "Failed '$($TestResults.FailedCount)' tests, build failed"
}
Run Code Online (Sandbox Code Playgroud)

然后在使用后的脚本中Invoke-PSake

exit ( [int]( -not $psake.build_success ) )
Run Code Online (Sandbox Code Playgroud)