Существует ли инструмент развертывания (или набор инструментов), который поддерживает откат развертывания? - PullRequest
4 голосов
/ 14 мая 2011

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

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

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

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

Ответы [ 3 ]

1 голос
/ 14 мая 2011

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

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

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

1 голос
/ 15 мая 2011

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

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

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

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

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

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

0 голосов
/ 14 мая 2011

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

https://github.com/capistrano/capistrano

...