【发布时间】:2013-05-05 10:51:11
【问题描述】:
我一直在关注Standard Environments for Automated Deployment and Testing,但遇到了一些错误。
我有两台服务器,一台是 Windows Server 2008 R2,另一台是 Windows Server 2012。在这两台机器上我都安装了Web Deploy 3 并且服务Web Deployment Agent Service 正在两台机器上运行。我在我的域中有服务帐户,并将两台机器上的帐户添加到管理员组。我还将此帐户用于构建和测试控制器和代理。
2008服务器是构建服务器,我想用构建服务器部署一个网站到2012服务器。我有一个构建定义,它使用标准 TFS 2012 Update 2 流程模板(添加 /p:DeployOnBuild=True 作为 MS 构建参数)使用 zip 和 deploy.cmd 等制作包。
我有另一个基于 LabDefaultTemplate TFS 2012 更新 2 模板的构建定义。在实验室流程模板中,我在部署选项卡上添加了以下命令:
"$(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\UI.Web.Mvc4.deploy.cmd" /y /m:SERVERNAME_OF_THE_2012_SERVER
当我运行第二个构建定义时,我收到“拒绝访问”错误。我不知道它是从哪里来的。我没有看到这里发生任何特别的事情。我还将日志设置为诊断,但这不起作用。
当我将远程桌面连接到 2008 构建服务器并手动运行相同的 deploy.cmd 时,一切正常。站点部署在 2012 服务器上,一切都在运行。
有人可以帮我吗?
谢谢
从构建中添加日志:
Deploy Build on Environment
00:22
Deploying Build
00:22
Run Deployment scripts
Initial Property Values
Values = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat
00:22
Run Deployment Task
Initial Property Values
BuildLocation = \\AP-GDA06-TFSB\DropFolder\Dev MVC4\Dev MVC4_20130510.11
DeploymentScriptDetails = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat
LabEnvironmentUri = vstfs:///LabManagement/LabEnvironment/3
MaxWaitTime = 00:30:00
ThrowOnError = True
UseRoleForDeployment = True
Deployment Task Logs for Machine: 2012_SERVER
Access is denied
Exception Message: Team Foundation Server could not complete the deployment task for machine '2012_SERVER', script '\\2008_SERVER\DropFolder\Dev MVC4\Dev MVC4_20130510.11\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat' and arguments ''. (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)
Final Property Values
BuildLocation = \\2008_SERVER\DropFolder\Dev MVC4\Dev MVC4_20130510.11
DeploymentScriptDetails = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat
LabEnvironmentUri = vstfs:///LabManagement/LabEnvironment/3
MaxWaitTime = 00:30:00
ThrowOnError = True
UseRoleForDeployment = True
Final Property Values
Values = Web Server | $(BuildLocation)\_PublishedWebsites\UI.Web.Mvc4_Package\start.bat
启动的 BAT 文件包含以下命令:
START UI.Web.Mvc4.deploy.cmd /y /m:2012_SERVER
【问题讨论】:
-
你能提供更多的错误信息吗?您应该能够打开构建并“查看日志”以查看究竟发生了什么以及发生在哪里......您可能需要将构建过程中的“记录详细程度”更改为“诊断”并再次运行它。
-
哦,您是在本地服务器上运行还是在tfs.visualstudio.com 上运行?
-
我在本地运行 TFS 2012 和构建服务器。所以这里没有云。我添加了引发错误的日志部分。
-
日志处于诊断模式
-
我有点远。我在构建服务器的 DropFolder 上拥有组“Everyone”权限,脚本执行得很好。现在我需要知道我需要授予哪个帐户而不是每个人的权限...
标签: tfs msbuild web-deployment webdeploy