2013-10-05 4 views
4

Я хочу автоматизировать процесс, который вызывается после успешной сборки на TFS. Процесс будет RDP на тестовый сервер, затем вызовет приложение C# на этом сервере и сбросит IIS на этом сервере. Каждый шаг будет возвращать результат, чтобы на следующем шаге был сделан вызов следующего шага.Автоматизация IISRESET через соединение удаленного рабочего стола после сборки TFS

Есть несколько препятствий при его осуществлении. Ниже я хочу знать, если это возможно, и как его кодировать.

1) Вызов процесса на TFS через сборку

Существует вариант в определении сборки для вызова автоматизированного теста. Я предполагаю, что этот процесс можно вызвать, выполнив его как тест.

2) RDP на удаленный сервер

Я нашел ссылки ниже, которые могут представлять собой раствор

Process rdcProcess = new Process(); 
rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe"); 
rdcProcess.StartInfo.Arguments = "/generic:TERMSRV/192.168.0.217 /user:" + "username" + " /pass:" + "password"; 
rdcProcess.Start(); 

rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\mstsc.exe"); 
rdcProcess.StartInfo.Arguments = "/v " + "192.168.0.217"; // ip or name of computer to connect 
rdcProcess.Start(); 

Run mstsc.exe with specified username and password

Automating remote desktop connection

3) IISReset

Я думаю, что это должно быть просто вызвано «IISRESET» после RDP, но проблема в том, что, КАК захватить результат запуска IISRESET.

инструменты, которые могут быть пригодными:

1) Powershell - я не знаю много о Powershell, но я готов учиться, если требуется

2) C#

Мой вопрос заключается в том, что как его реализовать, любой пример кода и идея будут очень оценены.

+0

Зачем вам нужно подключиться через RDP к удаленному компьютеру? iisreset поддерживает параметр computername для выполнения удаленных сбросов. –

+0

Как уже упоминалось, мне нужно вызвать приложение C#, а затем сбросить iis. Не могли бы вы рассказать о том, что вы сказали? Возвращает ли он статус сброса? – Pingpong

+0

Я не уверен, что нужно для разработки. Он создает консольный вывод, как если бы вы запускали iisreset на целевой машине, если это то, о чем вы просите. –

ответ

0

Проверьте мой ответ здесь что несколько связанно: Answer

Если пользователь, который запускает TFSBuild службы на сервере сборки имеет достаточно прав на тестовом сервере, то вы можете использовать PsExec или PowerShell для запуска команды удалено. Прочитайте ссылки ниже:

PSEXEC

PowerShell Remote commands

Там нет встроенного активность/процесса, который может помочь вам запускать сценарии на удаленных компьютерах в TFS построить рабочий процесс.

Шаг 1: Вы должны определить, как вы собираетесь запускать скрипты на удаленной машине, как упомянуто выше, вы можете использовать PSEXEC или Powershell (хотя запуск PowerShell на удаленных компьютерах может быть несколько сложнее для настройки) ,

Step2, пишут сами сценарии, чтобы сделать работу, остановить службы, установить MSI и т.д.

Step3, Редактировать текущую сборки дефиниция - создать новую пользовательскую активность или использовать InvokeProcess активности из вашего определения построения для вызова сценария, который вы создали на шаге 2. InvokeProcess Activity

0

в большинстве случаев вам не нужно запускать IISReset

, если вы хотите обновить приложение ASP.NET, попробуйте поставить app_offline.htm в папку приложения, он будет остановить приложение и файлы приложения будут разблокирован

после обновления приложения, оно будет автоматически перезагружен, или вы можете «коснуться» web.config, чтобы заставить рестарт

+0

Нет, IISRsset специфичен для моего приложения, не связанного с этим случаем. – Pingpong

+0

ОК. если вы запускаете вещи под TFS, я бы предложил использовать такие вещи, как файл msbuild, например http://www.msbuildextensionpack.com/. Есть вещи для удаленного выполнения задачи. – chipitsine

0

вы могли бы быть лучше, используя сборочную лабораторию для запуска сценариев, как часть среды О.Б. целевой компьютер. Он может работать любой PowerShell против этой машины, а также развернуть и выполнять приложения ....

0

Вопрос: Как захватить результат запуска IISRESET

Я считаю, по старинке, Надежда это то, что вы

c:> IISRESET >> C: \ temp.войти

Вы можете использовать выше либо из CMD или PowerShell

0

В прошлом я использовал Psexec для выполнения команд на удаленном сервере, и где когда-либо мы должны контролировать поток в результате этой команды, мы просто передал консоль в общую папку и проверил флаг нашего успеха.

Я не уверен, что TFS может запускать команды таким образом, но мы реализовали его на hudson/jenkins.

Это не ответ на ваш вопрос напрямую, но он может предложить лучший путь вперед

Пример: psexec.exe \ удаленный_сервер «IISReset> час: \ iisreset.log»

Затем запустить grep или подобный против iisreset.log с вашим флагом успеха как условие для запуска следующего шага.

Смежные вопросы