Я развертываю в основном приложения ASP.NET на серверах Linux. Вот мой стандартный рабочий процесс:
- Я использую репозиторий исходного кода (например, Subversion)
- На сервере у меня есть скрипт bash, который выполняет следующее:
- Проверяет последний код
- Выполняет сборку (создает библиотеки DLL)
- Фильтрует файлы до самого необходимого (например, удаляет файлы кода)
- Резервное копирование базы данных
- Развертывает файлы на веб-сервере в каталоге с текущей датой
- Обновляет базу данных, если в развертывание включена новая схема
- Делает новую установку по умолчанию, поэтому она будет обслуживаться со следующим попаданием
Оформление заказа производится с помощью версии Subversion для командной строки, а сборка - с помощью xbuild (msbuild аналогично проекту Mono). Большая часть магии делается в ReleaseIt.
На моем dev-сервере у меня, по сути, непрерывная интеграция, но на производственной стороне я фактически подключаю SSH к серверу и запускаю развертывание вручную, запустив скрипт. Мой сценарий хитро называется 'deploy', поэтому я набираю его в командной строке bash. Я очень креативный. Не.
В производственном процессе мне приходится дважды вводить 'deploy': один раз для извлечения, сборки и развертывания в устаревшем каталоге, и один раз, чтобы сделать этот каталог экземпляром по умолчанию. Поскольку каталоги датированы, я могу вернуться к любому предыдущему развертыванию, просто набрав «deploy» из соответствующего каталога.
Первоначальное развертывание занимает пару минут, а возврат к предыдущей версии занимает несколько секунд.
Это было хорошее решение для меня, оно опирается только на три утилиты командной строки (svn, xbuild и releaseit), клиент БД, SSH и Bash.
Мне действительно нужно когда-нибудь обновить копию ReleaseIt на CodePlex:
http://releaseit.codeplex.com/