我在TFS 2017中使用CI / CD演示进行了简单的构建过程,如https://msdn.microsoft.com/en-us/powershell/dsc/dsccicd
中所述构建定义包含四个步骤:
当Pester测试失败时,我希望整个构建失败。即使发布的测试结果显示为失败(在“构建详细信息”的“问题”部分中),此时构建也会成功。 我不知道如何强制整个构建失败,无法查看构建定义参数。
答案 0 :(得分:4)
我没有使用TFS,但在我的构建过程中,测试失败会通过输出错误触发构建失败。
这是通过将-PassThru
开关添加到Invoke-Peter
并将命令结果发送到变量来完成的:
$TestResults = Invoke-Pester -Path .\Tests -PassThru
如果测试失败,则写入错误:
if($TestResults.FailedCount -gt 0)
{
Write-Error "Failed '$($TestResults.FailedCount)' tests, build failed"
}
然后在使用Invoke-PSake
后的脚本中<:p>
exit ( [int]( -not $psake.build_success ) )
答案 1 :(得分:2)
您可以使用Logging Commands并退出代码以使构建任务失败,然后使整个构建失败。
Write-Error ("Some error")
exit 1
添加powershell任务以捕获已发布的测试日志或状态,以判断是否必须使任务失败。有关如何使vNext构建失败的更多详细信息,请参阅此问题:How to fail the build from a PowerShell task in TFS 2015
答案 2 :(得分:1)
VSTS和TFS 2017为当前作业状态设置环境变量。
因此,将“发布测试结果”任务设置为“始终运行”,然后添加以下PowerShell任务以使构建失败:
https://docs.microsoft.com/en-us/vsts/pipelines/build/variables?view=vsts&tabs=batch
$hasTestFailed = [Environment]::GetEnvironmentVariable("agent.jobstatus")
if ( $hasTestFailed -ne 'Succeeded')
{
exit 666
}