Существует ли инструмент развертывания (или набор инструментов), поддерживающий откат развертывания?

Я изучаю FluentMigrator. Что мне нравится в FM, так это то, что он поддерживает идею «вперед» и «назад» для миграций (также известных как «вверх/вниз»). Я нахожу, что это не идеально; есть какие-то дырочки. Тем не менее, это хорошо.

Это заставляет меня задаться вопросом, существуют ли какие-либо инструменты развертывания (nant, msbuild или другие), которые поддерживают эту идею отката вперед и назад. Сценарий, в котором я его использую, — это развертывание веб-приложения со связанной базой данных.

В идеале я хотел бы настроить свое развертывание таким образом, чтобы в случае сбоя какой-либо его части оно возвращалось к предыдущей известной рабочей конфигурации. С FM это довольно легко сделать (но есть шероховатости), так что это покрывает db. Как насчет файлов, из которых состоит веб-приложение? Поддерживаются ли какие-либо инструменты развертывания для этого?

Развертывание на Windows Server. Предположим, что я не могу внести какие-либо изменения в сервер.


person jcollum    schedule 13.05.2011    source источник
comment
Прохладный. Мой ответ остается в силе.   -  person marto    schedule 16.05.2011


Ответы (3)


Я не знаю никаких ориентированных на Microsoft автоматизированных инструментов подготовки/развертывания, таких как Capistrano. Вот некоторые инструменты, о которых я слышал, но никогда не использовал:

Примерно три месяца назад мы выполняли развертывание/подготовку с помощью пользовательских сценариев MSBuild. После подготовки сервера развертывание происходит автоматически с помощью Robocopy для копирования файлов в общий ресурс на сервере приложений, обновления измененных двоичных файлов приложения и файлов разметки. У нас никогда не было необходимости откатывать какое-либо из наших развертываний, но, поскольку наши сценарии являются пользовательскими, мы могли бы написать логику, если бы нам это было нужно.

MSBuild — ужасный язык развертывания/подготовки. В течение последних трех месяцев мы писали все новые сценарии и переносили существующие на PowerShell. Это чудесно. В версии 2 есть поддержка запуска команд на удаленных серверах, таких как SSH. Мы еще не использовали эту функцию, но я с нетерпением жду возможности отправить сценарии установки на удаленный сервер, чтобы обеспечить и одновременное развертывание.

person Aaron Jensen    schedule 14.05.2011

Мы использовали Git для развертывания в течение последних 6 месяцев.

Вот весь процесс:

  1. CI-сервер создает проект
  2. CI-сервер регистрирует его в локальном репозитории git.
  3. CI-сервер отправляет изменения в централизованный репозиторий git.
  4. Пользователь создает пустой репозиторий на живом сервере.
  5. Пользователь добавляет центральный репозиторий git к удаленным
  6. Пользователь загружает последнюю версию через https (нет необходимости открывать какие-либо порты)

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

Также вы можете сэкономить время, если будете использовать размещенную службу git (github) для своего центрального репозитория.

Это очень краткое описание, но я могу дать вам больше информации, если хотите.

person marto    schedule 14.05.2011
comment
Как вы обрабатываете изменения в базе данных? У вас есть база данных или резервное хранилище, привязанное к вашему приложению? - person jcollum; 17.05.2011
comment
В настоящее время мне это не нужно, потому что на большинстве сайтов мы используем стороннюю cms, которая обрабатывает базу данных. - person marto; 17.05.2011

Конечно! Мой любимый Капистрано. Первоначально он был создан для Ruby, но я обнаружил, что он работает так же хорошо и для других языков.

https://github.com/capistrano/capistrano

person Matthew Ratzloff    schedule 13.05.2011
comment
Хм. Обновил вопрос. Разве капистрано не потребует от меня открыть Windows Server для SSH? Я мало знаю о SSH. - person jcollum; 14.05.2011
comment
Да, но какие есть альтернативы, FTP? Любой среде развертывания потребуется какой-либо терминальный доступ к серверу. Однако развертывание Capistrano из коробки Windows, вероятно, будет означать установку Cygwin и PuTTY. Я бы сначала поискал чистые альтернативы Windows. - person Matthew Ratzloff; 14.05.2011