Сценарии развертывания управления TFS Lab
Я пытаюсь настроить стандартную лабораторную среду с TFS 2012, используя рабочий процесс Build-Deploy-Test. Я настраиваю тестовый контроллер и тестовые агенты, но когда рабочий процесс 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 начинает сборку, а затем получает сценарии развертывания. Определение сборки копирует файлы сборки в место размещения. Рабочий процесс запускает каждый сценарий развертывания в рабочем каталоге конкретной машины или роли компьютера, которой назначен сценарий. Каждый сценарий развертывания извлекает файлы сборки из места размещения. Каждый сценарий развертывания копирует или устанавливает указанные файлы сборки на компьютеры в лабораторной среде.
В этот момент проблема обнаруживается - рабочий процесс запускает каждый сценарий развертывания в рабочем каталоге конкретного компьютера.
Обе машины находятся в одном домене. Пользователь, который запускает службу сборки, также находится в группе администраторов на удаленной машине. Я даже поделился удаленной папкой, где рабочий процесс должен копировать файлы / сценарии со всеми в сети, но опять не повезло.
Я делаю что-то глупое, что сводит меня с ума - любая помощь или мысли очень ценятся!
Бест, Радо
2 ответа
Вы можете попробовать проверить%ErrorLevel% на последнем скрипте bat. Я встретил ту же ошибку, и оказалось, что эта ошибка была вызвана кодом завершения robocopy, который возвращает 1, когда копия успешна. Я установил код ошибки на 0, проблема была исправлена.
Следующее решение может решить вашу проблему.
Шаги: Создайте локальную учетную запись на следующем сервере: учетная запись службы локальной лаборатории - tfslab
Тестовый сервер tfs: создайте локальную учетную запись tfslab. Также настройте tfslab как учетную запись службы лаборатории в консоли настройки тестового контроллера
Сервер тестового агента tfs: создайте локальную учетную запись tfslab и добавьте tfslab в локальную группу администраторов. Также обновите службу агента тестирования Visual Studio и службу агента Visual Studio Lab, чтобы она работала как tfslab.
Сервер папок tfs drop: создайте локальную учетную запись tfslab. И добавьте разрешение на чтение общего ресурса в папку TFS.
Подробности обсуждения смотрите здесь.