我在TFS 2013中有一个构建配置,可以生成版本化的构建工件。此构建使用开箱即用的流程模板工作流程。我希望在单元测试失败的情况下销毁构建工件,只留下日志文件。我有一个Post-Test powershell脚本。如何在此脚本中检测测试失败?
以下是我的测试后脚本中的相关清理方法:
function Clean-Files($dir){
if (Test-Path -path $dir) { rmdir $dir\* -recurse -force -exclude logs,"$NewVersion" }
if(0 -eq 1) { rmdir $dir\* -recurse -force -exclude logs }
}
Clean-Files "$Env:TF_BUILD_BINARIESDIRECTORY\"
如何在功能中测试测试成功?
答案 0 :(得分:3)
(根据更多信息更新)
执行此操作的方法是使用环境变量并在PowerShell脚本中读取它们。不幸的是,powershell脚本每次都在一个新进程中运行,因此您不能依赖于正在填充的环境变量。
也就是说,有一个解决方法,所以你仍然可以获得这些值。它涉及在PowerShell脚本开头调用一个小实用程序,如本博文中所述:http://blogs.msmvps.com/vstsblog/2014/05/20/getting-the-compile-and-test-status-as-environment-variables-when-extending-tf-build-using-scripts/
答案 1 :(得分:2)
这不是一个直接的答案,但是......我们只是将保留策略设置为仅保留x个构建数。如果测试失败,则不会将工件推送到下一步。
使用我们的Jenkins设置,它无论如何都会擦除每个新构建的工件,因此这不是问题。只有传递构建才会触发将工件推送到Octopus NuGet服务器的步骤。
答案 2 :(得分:2)
最简单的方法(没有自定义构建模板等)在后测试脚本中执行类似的操作:
$testRunSucceeded = (sqlcmd -S .\sqlexpress -U sqlloginname -P passw0rd -d Tfs_DefaultCollection -Q "select State from tbl_TestRun where BuildNumber='$Env:TF_BUILD_BUILDURI'" -h-1)[0].Trim() -eq "3"
让我们分开:
也许有一天微软会发布一个很好的REST API来提供对测试运行/结果信息的访问。不要屏住呼吸 - 到目前为止我已经等了6年了。与此同时,直接点击TFS DB是一种安全可靠的方法。
希望这有一些用处。