tfs - Acceso denegado cuando intenta utilizar la implementación web
msbuild web-deployment (3)
He estado siguiendo Entornos estándar para implementación y pruebas automatizadas y he encontrado algunos errores.
Tengo dos servidores, uno Windows Server 2008 R2 y otro Windows Server 2012 . En ambos instalé Web Deploy 3
y el servicio Web Deployment Agent Service
está ejecutando en ambas máquinas. Tengo la cuenta de servicio en mi dominio y agregué la cuenta en ambas máquinas al grupo Administradores. También usé esta cuenta para el controlador y agente de compilación y prueba.
El servidor 2008 es el servidor de compilación y quiero implementar un sitio web con el servidor de compilación en el servidor de 2012. Tengo una definición de compilación que crea el paquete con zip y deploy.cmd
etc. con la plantilla de proceso TFS 2012 Update 2 estándar (se agrega /p:DeployOnBuild=True
como argumento de compilación MS).
Tengo otra definición de compilación basada en la plantilla LabDefaultTemplate TFS 2012 actualización 2. En las plantillas de proceso de laboratorio agregué el siguiente comando en la pestaña de implementación:
"$(BuildLocation)/_PublishedWebsites/UI.Web.Mvc4_Package/UI.Web.Mvc4.deploy.cmd" /y /m:SERVERNAME_OF_THE_2012_SERVER
Cuando ejecuto la segunda definición de construcción, aparece el error "Acceso denegado". No sé de dónde viene. No veo que ocurran cosas especiales aquí. También configuré el registro para el diagnóstico, pero eso no funciona.
Cuando establezco una conexión con Remote Desktop para el servidor de compilación 2008 y ejecuto manualmente el mismo deploy.cmd
, todo está funcionando. El sitio se implementa en el servidor 2012 y todo se está ejecutando.
¿Alguien me puede ayudar?
Gracias
Registro agregado de la compilación:
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
El archivo BAT que se inicia contiene el siguiente comando:
START UI.Web.Mvc4.deploy.cmd /y /m:2012_SERVER
Si inicia la definición de compilación que está utilizando DefaultLabTemplate , debería ver lo siguiente en su registro de compilación:
...
If deployment needed
Do deployment
Reserve Environment For Deployment
Deploy Build on Environment
Deploying Build
Run Deployment scripts
Run Deployment Task
Deployment Task Logs for Machine: <your machine>
Accessing the following location using the lab service account: <your service account>, <your drop location>.
...
¿Ves que está usando la cuenta de Lab Service?
Al usar Visual Studio 2012 Update 4 y Team Foundation Server, en una configuración de confianza unidireccional o de red aislada / grupo de trabajo, descubrimos que se requiere un paso adicional. Al ejecutar pruebas unitarias automatizadas a través del flujo de trabajo Build-Deploy-Test (pero no de Web Deploy), descubrimos que establecer la cuenta de servicio de laboratorio es solo parte de la solución. Para evitar que Access tenga errores en la compilación, también tuvimos que configurar el usuario para el servicio de agente de Visual Studio Lab.
Esto es lo que parecen los servicios del applet Servicios después de configurar la cuenta de servicio de laboratorio (en este ejemplo, ". / LabAdmin"):
Visual Studio Lab Agent Service | Configures, monitors... | Running | Automatic | Local System Visual Studio Lab Network Agent Service | Sets network propert... | Running | Automatic | Local System Visual Studio Test Agent | Provides distributed... | Running | Automatic | ./LabAdmin
Para solucionar el error de Acceso denegado, también tuvimos que ejecutar el Servicio de agente de Visual Studio Lab en la cuenta de servicio de laboratorio:
Visual Studio Lab Agent Service | Configures, monitors... | Running | Automatic | ./LabAdmin Visual Studio Lab Network Agent Service | Sets network propert... | Running | Automatic | Local System Visual Studio Test Agent | Provides distributed... | Running | Automatic | ./LabAdmin
Después de realizar este cambio y reiniciar los servicios, el error de acceso denegado desapareció. Esto se repitió en dos computadoras objetivo diferentes, al menos con nuestra configuración parece ser un paso necesario.
Mira esta respuesta: https://.com/a/16566204/648297
Esta fue la solución en mi caso.
Esto podría ser útil para usted también: ¿Qué es la cuenta de servicio de laboratorio?