В настоящее время мы используем Cruise Control .Net и Nant для создания пакетов развертывания для нашего веб-сайта ASP .NET. По сути, это просто версии и файлы, код компилируется, а затем создается zip-файл. Затем разработчик может установить удаленный рабочий стол на целевой компьютер, загрузить zip-файл, распаковать его и поместить содержимое в правильную папку IIS.
Мы хотим автоматизировать этот процесс развертывания, поэтому я написал пакетный файл для ручной работы. Он загружает zip-файл с помощью wget с нашего сервера сборки, распаковывает его, останавливает iis, заменяет веб-файлы, а затем снова перезапускает iis. Проблема в том, что этот файл должен запускаться на самой целевой машине, и я хотел бы избавиться от необходимости напрямую подключаться к целевой машине.
Еще одно требование - мы можем повторно развернуть одну и ту же сборку на разные серверы. Поэтому я хочу выбрать предыдущую сборку и сказать «развернуть ее на сервере X» без необходимости перестраивать веб-сайт вообще. Это когда сборка была протестирована на нашем сервере Teset, и мы хотим развернуть ту же самую сборку, то есть один и тот же zip-файл, на наших производственных серверах.
Я рассматривал возможность использования psexec для удаленного запуска командного файла, и хотя это должно работать, это означает, что каждому разработчику потребуется установить psexec на своем компьютере, что не идеально. Я хотел бы как можно больше скрыть реализацию развертывания и просто сделать его простым упражнением «наведи и щелкни».
Я предполагаю, что идеальным сценарием было бы как-то привязать этап развертывания к нашей панели управления круиз-контролем, которая раскрывает списки сборок и серверов для развертывания. Затем мы могли бы выбрать сервер сборки и целевой сервер, а сервер сборки (на котором не установлен круиз-контроль) будет использовать psexec для развертывания выбранной сборки на целевой машине. Однако я не думаю, что это возможно.
У кого-нибудь есть предложения?
Я бы смотрел на webdeploy. В последнее время это должен быть серьезный продукт, и вы можете делать все, что возможно, через пользовательский интерфейс. Вот ссылка на сайт на подкаст + сообщения в блоге от парня, который довольно серьезно относится к развертыванию с нулевым кликом.
Просто настройте свою работу круиз-контроля с помощью дополнительного шага exec, который вызывает Microsoft Webdeploy с правильными аргументами и отправляет на нужный сервер. Затем разработчики могут войти в CC.NET и нажать кнопку «принудительно» для задания «build-and-deploy», которое будет построено, а затем запустить этап webdeploy для этой конкретной сборки. У меня их куча отлично работает на CC.net. Дайте мне знать, если вам нужны конкретные детали конфигурации.