TFS实验室管理部署脚本

时间:2012-12-10 21:17:05

标签: tfs tfs2012

我正在尝试使用Build-Deploy-Test工作流程在TFS 2012中设置标准实验室环境。我设置了测试控制器和测试代理,但是当LabManagement工作流开始执行时,我在RunDeploymentTask活动上获得了一个异常

Initial Property Values
BuildLocation = \\S0503TFS2T\TFSPlayground\ConsoleApplicationBuild\ConsoleApplicationBuild_20121210.23
DeploymentScriptDetails = agent1 | "$(BuildLocation)\Deploy.bat" $(BuildLocation) | c:\Env
LabEnvironmentUri = vstfs:///LabManagement/LabEnvironment/4
MaxWaitTime = 00:30:00
ThrowOnError = True
UseRoleForDeployment = True
Deployment Task Logs for Machine: win7testagent1
 Access is denied
 Exception Message: Team Foundation Server could not complete the deployment task for machine 'win7testagent1', script '"\\S0503TFS2T\TFSPlayground\ConsoleApplicationBuild\ConsoleApplicationBuild_20121210.23\Deploy.bat"', arguments '\\S0503TFS2T\TFSPlayground\ConsoleApplicationBuild\ConsoleApplicationBuild_20121210.23' and working directory 'c:\Env'. (type LabDeploymentProcessException)
Exception Stack Trace: 
Server stack trace: 
   at Microsoft.TeamFoundation.Lab.Workflow.Activities.RunDeploymentTask.ExecuteDeploymentTask.RunCommand(AsyncState state)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase)
   at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData)
   at System.Action`1.EndInvoke(IAsyncResult result)
   at Microsoft.TeamFoundation.Lab.Workflow.Activities.RunDeploymentTask.ExecuteDeploymentTask.EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
   at System.Activities.AsyncCodeActivity.CompleteAsyncCodeActivityData.CompleteAsyncCodeActivityWorkItem.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)

显然,这是安全问题,我无法克服它 以下是MSDN解释此过程的方法:

build-deploy-test工作流启动构建,然后获取部署脚本。 构建定义将构建文件复制到放置位置。 工作流在分配脚本的特定计算机或计算机角色的工作目录中运行每个部署脚本。 每个部署脚本都从放置位置检索构建文件。 每个部署脚本都将指定的构建文件复制或安装到实验室环境中的计算机上。

此时出现问题 - 工作流在特定计算机的工作目录中运行每个部署脚本。

两台计算机位于同一域中,运行Build服务的用户也位于远程计算机的管理员组中。我甚至共享了远程文件夹,其中工作流应该与网络中的每个人一起复制文件/脚本但是没有运气。

我正在做一些让我发疯的蠢事 - 非常感谢任何帮助或想法!

最佳, 雷达表

2 个答案:

答案 0 :(得分:0)

以下解决方案可能会解决您的问题。

步骤:在以下服务器上创建本地帐户:本地实验室服务帐户 - tfslab

  1. tfs test controller server:创建本地tfslab帐户。还要将tfslab配置为测试控制器配置控制台中的实验室服务帐户

  2. tfs测试代理服务器:创建本地tfslab帐户并将tfslab添加到本地管理员组。还要更新Visual Studio Test Agent服务和Visual Studio Lab Agent服务以作为tfslab运行。

  3. tfs drop folder server:创建本地tfslab帐户。并向tfs drop文件夹添加共享读取权限。

  4. 详情讨论见here

答案 1 :(得分:0)

您可以尝试在最后一个bat脚本中检查%ErrorLevel%。我遇到了同样的错误,结果发现该错误是由robocopy的退出代码引起的,当副本成功时返回1。我将错误代码设置为0,问题已修复。