Используйте MSDeploy, чтобы скопировать исполняемый файл на сервер и затем запустить тот же - PullRequest
9 голосов
/ 18 декабря 2011

У меня есть MSDeploy / WebDeploy, работающий над обновлением моих веб-приложений - это решает около 90% моих проблем с развертыванием тех вещей, которые я уже настроил.

Что бы я хотелкроме того, нужно скопировать исполняемый файл - прагматически содержимое папки - на сервер и затем запустить этот исполняемый файл (который выполняет обновления схемы).

Я вижу, что это должно быть возможно, но я изо всех сил пытаюсь собрать части вместе (это явно крайний случай).

В частности:

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

Столько, сколькочто угодно, какие конкретные команды в каком порядке - если я могу найти шаблон, я могу заставить его работать, но я изо всех сил пытаюсь разработать шаблон


Примечания:

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

Стоит также отметить, что я действительно действительно доволен тем, как я поддерживаю схемы базы данных, поэтому тот факт, что именно это делает исполняемый файл, является второстепенным для вопроса

1 Ответ

12 голосов
/ 09 марта 2012

Web Deploy предлагает здесь довольно много опций. Выбор параметров зависит от того, сколько вещей вы хотите поместить в одну команду.

Чтобы получить папку файлов к месту назначения, вы можете использовать поставщика dirPath Web Deploy для копирования в любое место по вашему выбору. Чтобы скопировать отдельный файл, вы можете использовать провайдер filePath . Если в вашем источнике копий много мелких файлов, Web Deploy на самом деле более эффективен, чем RoboCopy по сети (см. Мой блог Web Deploy против Robocopy ).

Чтобы запустить командный файл, который вы скопировали на целевой сервер, вы можете использовать провайдера runCommand . (Это важный вопрос, я бы обязательно его прочитал.)

Обратите внимание, что на данный момент речь идет как минимум о двух отдельных командах Web Deploy, не считая ни одной из «обычных» операций Web Deploy, таких как развертывание веб-сайта или веб-сервера.

Однако, если ваша цель - добиться всего за одну операцию веб-развертывания, вы можете использовать провайдера manifest . Создайте пользовательский файл манифеста, в котором указан ряд операций поставщика Web Deploy, которые будут выполняться по очереди. Затем в команде Web Deploy укажите провайдеру манифеста пользовательский файл манифеста. Для получения дополнительной информации об этом подходе см. Создание и синхронизация пользовательского манифеста .

Если вы используете провайдер манифеста, вы можете указать провайдера dirPath в файле манифеста для копирования файла или файлов, а затем указать провайдера runCommand для последующего строка для запуска исполняемого файла, который вы скопировали.

Наконец, подход на один шаг меньше, чем использование файла манифеста, заключается в использовании ключей командной строки preSync и / или postSync для запуска команды на целевом сервере до или после фактическая операция Web Deploy происходит. Дополнительную информацию о preSync и postSync можно найти на странице Параметры операций веб-развертывания .

Все ссылки на страницы имеют примеры синтаксиса, так что это должно помочь.

...