Помогите мне придумать стратегию развертывания - PullRequest
9 голосов
/ 01 сентября 2009

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

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

Изменить: я перечислю инструменты, которые я использовал для решения каждого этапа

  1. Проверить весь код из системы контроля версий (исполнение)
  2. Сборка отладочной и релизной версии. Релиз версия требует различных строк подключения в web.config. (MSBUILD) * +1010 *
  3. Запустить все юнит-тесты
  4. Для каждой страницы (aspx) объедините все ссылочные JS-файлы и встроенный код в один файл. То же самое с CSS
  5. Сокращение указанных файлов JS и CSS.
  6. Резервное копирование действующей схемы базы данных и данных
  7. развернуть изменения схемы базы данных на работающем сервере
  8. загрузить все файлы, которые являются новыми или изменены на сервер.
  9. Резервное копирование всего кода и моего хранилища исходного кода на внешний диск и, возможно, в оперативном режиме.

Мне повезло, что на моем сайте не будет посетителей с 1:00 до 16:00, так что все это можно сделать без необходимости установки серверов и т. Д.

Я знаю, что мой вопрос длинный, но это, вероятно, поможет многим людям.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2009

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

Вы можете использовать MSBuild для выполнения 1-4 без проблем. Мы обновляем наши веб-конфигурации с помощью MSBuild с помощью задачи XMLUpdate , а также запускаем некоторые сценарии awk для дополнения части нашего сгенерированного кода с использованием Exec task .

Для № 5 и № 6 вы, вероятно, снова захотите использовать Exec для выполнения какого-либо сценария, чтобы получить файлы резервных копий и запустить их для производственных экземпляров, однако я не являюсь администратором SQL, поэтому понятия не имею, это лучший способ, или если для этого уже есть задачи MSBuild.

Для фактического копирования файла существует задача Копировать и, вероятно, другие, но вам может потребоваться прибегнуть к xcopy или к пользовательскому сценарию.

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

0 голосов
/ 20 октября 2009

Я попробовал следующее для развертывания на рабочем сервере, используя NAnt для обработки логики:

1) Проверьте папку с последней версией сборки на наличие номера редакции.

Если доступна более новая версия:

2) Получить файл со скомпилированными сценариями веб-сайта и базы данных (см. Ниже).

3) Перевести сайт в автономный режим (добавить app_offline.htm).

4) Применение сценариев базы данных (см. Ниже).

5) Вывести сайт в интернет (удалить app_offline.htm).


Что касается развертывания изменений в схеме базы данных, меня вдохновили некоторые посты К. Скотта Аллена . Короткая версия этого:

1) Запишите каждое новое изменение в схему базы данных (таблицы, индексы, начальные данные) и сохраните каждое новое изменение в отдельных файлах (например, schema-001.0001.sql, schema-001.0002.sql и т. Д.). Храните эти файлы в отдельной папке, например, sql\schema.

2) Сценарий разное. объекты (хранимая процедура, функции, триггеры и представления) в отдельных файлах в отдельных папках, например sql\procedures\uspGetProducts.sql, sql\procedures\uspUpdateProduct.sql, sql\functions\, sql\triggers\, sql\views\

3) При развертывании: a) Удалите все разное. объекты из части 2, б) применить изменения схемы из части 1, которые ранее не применялись, в) и, наконец, воссоздать все разное. объекты из части 2.

Эти сценарии могут быть развернуты автоматически, например, Скрипты Nant на производственном сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...