2

我正在尝试使用 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 工作流启动构建,然后获取部署脚本。构建定义将构建文件复制到放置位置。工作流在脚本分配到的特定机器或机器角色的工作目录中运行每个部署脚本。每个部署脚本都从放置位置检索构建文件。每个部署脚本都将指定的构建文件复制或安装到实验室环境中的机器上。

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

两台机器都在同一个域中,运行构建服务的用户也在远程机器的管理员组中。我什至与网络中的每个人共享了工作流应该复制文件/脚本的远程文件夹,但再次没有运气。

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

最好的,雷达

4

2 回答 2

0

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

步骤:在以下服务器上创建本地账号:local lab service account - tfslab

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

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

  3. tfs 放置文件夹服务器:创建本地 tfslab 帐户。并将共享读取权限添加到 tfs drop 文件夹。

详细讨论见这里

于 2013-08-09T05:35:54.757 回答
0

You may try to check %ErrorLevel% at the last of your bat script. I met the same error, and it turned out that that error was caused by exit code of robocopy, which returns 1 when the copy successes. I set the error code to 0, the issue was fixed.

于 2013-12-18T13:02:44.770 回答