У нас есть весь наш код, развернутый в MSI. с помощью Setup Factory. Если что-то нужно изменить, мы повторно развертываем все решение. Это звучит излишне для файла css, но он полностью поддерживает синхронизацию всех сред, и мы точно знаем, что находится в производстве (мы развертываем во всех тестовых средах и средах uat одинаково).
Мы выполняем последовательное развертывание на действующих серверах, поэтому мы не используем проекты установщика; у нас есть что-то вроде CI:
robocopy автоматически обеспечивает развертывание только изменений.
Re the App Pool и т. д .; Я бы хотел, чтобы это было автоматизировано ( см. Этот вопрос ), но в момент это выполняется вручную. Однако я действительно хочу это изменить.
(вероятно, помогает то, что у нас есть собственный центр обработки данных и серверная ферма «на месте», так что нам не нужно преодолевать множество препятствий)
Простой XCopy для ASP.NET. Заархивируйте его, отправьте sftp на сервер, извлеките в нужное место. Для первого развертывания необходимо вручную настроить IIS
Еще в 2009 году, откуда пришел этот ответ, мы использовали CruiseControl.net для наших сборок непрерывной интеграции, которые также выводили Release Media.
Оттуда мы использовали программное обеспечение Smart Sync для сравнения с производственным сервером, который был вне пула с балансировкой нагрузки, и переместил изменения вверх.
Наконец, после проверки выпуска мы запустили сценарий DOS, который в основном использовал RoboCopy для синхронизации кода с живые серверы, останавливая / запуская IIS по ходу работы.
Ответы на ваши вопросы:
Сохранение простоты и простоты пока избавило нас от многих головных болей.
Чтобы подробнее рассказать об ответах других людей, кажется, что лучший способ сделать это, не дублируя один и тот же код в нескольких шаблонах, - просто иметь «лишний материал». функция (пустая для большинства типов данных, но содержащая код для любых объектов, которые имеют дополнительные данные), где «специализация шаблона» выбирает, какие «дополнительные данные»
Я развертываю в основном приложения ASP.NET на серверах Linux и повторно развертываю все даже при малейших изменениях. Вот мой стандартный рабочий процесс:
Checkout is выполняется с помощью версии Subversion для командной строки, а сборка выполняется с помощью xbuild (работа с msbuild аналогична проекту Mono). Большая часть магии выполняется в ReleaseIt.
На моем сервере разработки у меня, по сути, есть непрерывная интеграция, но на производственной стороне я фактически подключаюсь к серверу по SSH и инициирую развертывание вручную, запустив сценарий. Мой сценарий хитроумно назван «развертывание», поэтому я набираю его в командной строке bash. Я очень креативный. Нет.
В производственной среде я должен ввести «deploy» дважды: один раз для извлечения, сборки и развертывания в устаревшем каталоге и один раз, чтобы сделать этот каталог экземпляром по умолчанию. Поскольку каталоги устарели, я могу вернуться к любому предыдущему развертыванию, просто набрав «развернуть» в соответствующем каталоге.
Первоначальное развертывание занимает пару минут, а возврат к предыдущей версии - несколько секунд.
Это было отличное решение для меня, и оно полагалось только на три утилиты командной строки (svn, xbuild и releaseit), клиент БД, SSH и Bash.
Мне действительно нужно когда-нибудь обновить копию ReleaseIt на CodePlex: