Build-Deploy-Test工作流程未到达测试代理

时间:2014-12-11 17:01:04

标签: deployment tfs build automated-tests

在第一次使用TFS进行自动测试的新手中,所以我尝试使用Error来尝试很多东西。 但我希望你能给我一些想法我可能做错了。

我在Microsoft测试管理器中设置了一个环境,如MSDN的几个博客中所描述的那样。例如http://msdn.microsoft.com/en-us/library/hh873102.aspx#Prerequisites

我的基础架构如下:构建服务器和测试控制器在同一台机器(Win2012)上,但我的测试代理(Win2008R2)是另一台机器。一切都是TFS 2013或VS 2013 Update 3。

我有一个Build定义,它将Buildserver上的Tests构建到指定的Dropfolder中。这工作正常。和第二个构建定义,它使用LabDefaultTemplate.11来处理环境。在我指定环境,另一个构建定义部署脚本和我的测试计划与相关的自动化测试。

但如果我尝试启动Build-Deploy-Test工作流程,我会得到两个结果。 首先,在没有指定Deploment Script的情况下,工作流程达到测试运行并且工作流程变得无穷无尽(它运行16小时)然后我中止了它。 第二个我指定了部署脚本,现在看起来我得到了相同的但是在部署步骤。我让它运行了近20分钟,我在VM控制台上看了我的代理。 我所看到的只是他有时会在短时间内断开连接,然后再次在线。

现在我问,为什么这个Build Workflow会变得无穷无尽?

测试将是CodedUiTests。

这里停止了最后一次运行的日志:

20:37 Overall Build Process
20:37 Application Deployment Workflow
00:00 Update Build Number
00:00 Get Build Details
01:00 If Build is needed
01:00 Do Build
00:00 Start Build Workflow
01:00 Wait For Build To Complete
00:00 Set Build Location
00:00 Get Build Location And Build Number
00:00 Compute build location needed
00:00 Compute build path
00:00 If user selected stored environment
00:00 Get Lab Environment Uri
00:00 Get Lab Environment
00:00 If Restore Snapshot
00:00 No Clean Snapshot
00:00 If Virtual Environment
00:00 If deployment or test needed
00:00 Wait For Environment To Be Ready
19:36 If deployment needed
19:36 Do deployment
00:00 Reserve Environment For Deployment
19:36 Deploy Build on Environment
19:36 Deploying Build
19:36 Run Deployment scripts
19:36 Run Deployment Task Deployment Task Logs for Machine: Win2008R2   
00:00 Release Environment From Deployment

如果您需要更具体的信息,请留下所需要的答案,我会关心它,但我实际上不知道您需要什么,也不想过度填写这个问题

2014年12月16日编辑:

这里是要求的详细信息:

Deploying Build 00:30:00
Run Deployment scripts 00:30:00

Inputs
Values: Win2008R2TA02 | $(BuildLocation)\Uitest\deploymentScript.cmd $(BuildLocation)

Run Deployment Task00:30:00

Inputs
        UseRoleForDeployment: False
        MaxWaitTime: 00:30:00
        ThrowOnError: True
        BuildLocation: \\BuildServer\TFS Build\UiTest.Dev.Build\UiTest.Dev.Build_20141216.1
        LabEnvironmentUri: vstfs:///LabManagement/LabEnvironment/11
        DeploymentScriptDetails: Win2008R2TA02 | $(BuildLocation)\Uitest\deploymentScript.cmd $(BuildLocation)

我在互联网上找到的部署脚本,但我认为这可能有效。

REM set build path
set buildlocation=%1

REM set deployment path
set targetdir="C:\deploy"

REM create deployment directory
if not exist %targetdir% (cmd /c mkdir %targetdir%)

REM copy build to the deployment directory
xcopy /c /y /e %buildlocation%\*.* %targetdir%

REM if you are using a deployment package you can run it here, after you copy it to your deployment directory

我称之为:

$(BuildLocation)\Uitest\deploymentScript.cmd $(BuildLocation)

在测试控制器的Eventlog中,在Build运行时有一些错误重复: 服务控制Managar:

  

Visual Studio测试控制器服务意外终止。它   已经完成了这一次。以下纠正措施将是   在0毫秒内完成:重新启动服务。

.Net Runtime:

  

应用程序:QTController.exe Framework版本:v4.0.30319   描述:由于未处理的异常,进程终止。   异常信息:System.NullReferenceException Stack:at   Microsoft.TeamFoundation.TestManagement.Controller.BuildDropDownloadManager.GetLocalSharePath(System.String)   在   Microsoft.VisualStudio.QualityTools.Controller.DeploymentTaskMonitor.IsUsingServerDrop(Microsoft.VisualStudio.TestTools.Execution.DeploymentTask)   在   Microsoft.VisualStudio.QualityTools.Controller.DeploymentTaskMonitor.ProvisionBuildSharePermision(Microsoft.VisualStudio.TestTools.Execution.DeploymentTask)   在   Microsoft.VisualStudio.QualityTools.Controller.DeploymentTaskMonitor.ProcessNewDeploymentTasks()   在   Microsoft.VisualStudio.QualityTools.Controller.DeploymentTaskMonitor.Poll(System.Object的)   在System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
  在   System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,   System.Threading.ContextCallback,System.Object,Boolean)at   System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,   System.Threading.ContextCallback,System.Object,Boolean)at   System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,   System.Threading.ContextCallback,System.Object)at   System.Threading.ThreadHelper.ThreadStart(System.Object的)

我试过这个解决方案,但我没有帮助和链接相关我没有“Web Access”文件夹来清除缓存。 https://social.msdn.microsoft.com/Forums/vstudio/en-US/c1ba09a8-5b8a-4c6d-8635-83085593647b/tfs-2013-deploy-to-testlab-is-failing-labdefaulttemplate11?forum=tfsbuild

我真的坚持这个问题。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题。 问题是Buildserver上的Visual Studio和MTM安装已损坏,还安装了TestController。

如果您偶然发现此问题,请尝试以下方法。   - 所有组件是否在同一版本上(在我的情况下为2013 Update 3)还检查代理和控制器(在其配置对话框中,您找到一个关于按钮)   - 在服务器上打开MTM并检查它是否可以在项目的不同测试计划之间切换(在m情况下会出现错误,这就是Controller无法将案例交付给代理的原因。)

如果在我的情况下,请尝试卸载并重新安装Visual Studio和MTM 我的命令是在安装VS然后MTM然后实际更新后卸载第一个MTM然后VS.

答案 1 :(得分:0)

visual studio上的构建报告日志并不是很好。你检查过tfs网站上的日志了吗? (构建失败的报告 - >诊断 - >查看日志或在构建的网站上 - >定义 - >诊断)

您是否设置了部署脚本的超时? 16个小时很长一段时间。 您还可以将部署代码链接到脚本。您是否在代理上运行任何其他测试?您是否检查了登录名/密码并停用了代理上的登录屏幕,因为tfs在访问时遇到问题。