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