TFS 2010: запуск сценария powershell, хранящегося в системе управления версиями

#powershell #automated-deploy

#powershell #автоматическое развертывание

Вопрос:

Мы начали использовать TFS2010 в компании, в которой я работаю. Мы создаем веб-приложения для электронной коммерции (торговые сайты). Я создаю пользовательский шаблон для развертывания веб-проектов после сборки с использованием шаблона сборки. Я просмотрел средство веб-развертывания, но MSDN, похоже, указывает, что оно может выполнять только начальные развертывания, и мне нужно иметь возможность выполнять инкрементные развертывания с помощью того же сценария.

Я подумываю об использовании действия invokeActivity в шаблоне, чтобы использовать powershell для выполнения задания, указав FTP-скрипт, который автоматически копирует выходные данные сборки на указанный FTP-сайт, а затем запускает сценарии SQL (обновления), при необходимости используя SSH или интерактивный сеанс удаленного взаимодействия с powershell. (возможно, указанный в отдельном сценарии SQL)

Есть некоторые неизвестные для меня вещи, которые я не могу прояснить с помощью Google:

Смогу ли я разрешить пользователю при постановке сборки в очередь указывать сценарий, присутствующий в системе управления версиями (например, $(source)scriptsftpscript.ps1 ), в качестве сценария, который должен использоваться? Сможет ли powershell получить доступ к этому файлу или использовать его? или я должен скопировать его в каталог сборки и указать, когда я его запускаю? (Я не знаю, как настроить шаблон для получения файлов из системы управления версиями, поэтому был бы очень признателен за указатель на некоторую полезную информацию о том, как это сделать)

Если предыдущий вариант вообще не работает, могу ли я создать папку scripts в моем проекте веб-сайта, передать ее в систему управления версиями, а затем использовать BuildDetail.DropLocationRoot amp; "scripts" в качестве местоположения для сценария и предварительно скопировать файлы сценария, включив опцию принудительного копирования?

Комментарии:

1. Вы когда-нибудь понимали это? У меня возникла именно эта проблема

2. @NerdinTraining Мне жаль говорить, что я не смог завершить это. В конечном счете, в компании не было никого, кто мог бы поддержать меня в приобретении знаний, и мне пришлось отказаться от некоторых запланированных функций. В этом случае это было упрощено до процесса веб-развертывания InvokeProcess, что значительно упростило развертывание, но также сократило возможность простого запуска сценариев проверки. (извините за поздний ответ)

Ответ №1:

Для запуска сценария PowerShell, я думаю, вы можете использовать действие InvokeProcess, которое вызовет что-то вроде этого: %windir%system32windowspowershellv1.0powershell.exe «$(SolutionRoot)test.ps1

И да, вы можете получить доступ к файлу сценария, присутствующему в системе управления версиями, используя ключевое слово «SourcesDirectory».

Комментарии:

1. Я бы также добавил -NoProfile и -NonInteractive к аргументам Powershell, например "-NonInteractive -NoProfile -Command ""amp; {" SourcesDirectory "BuildMakeSdkZip.ps1 " SourcesDirectory " " ZipPath " }"""