Я не думаю, что есть простой ответ поваренной книги для этого, потому что это очень сильно зависит от вашей среды. Что бы вы ни придумали, я настоятельно рекомендую подход, основанный на сценариях, так как сценарии развертывания сами находятся в системе контроля версий. Эти сценарии также позволят улучшить интеграцию с решениями для сборки (см. Ниже).
Самый простой такой скрипт для запуска в вашей производственной среде - это просто команда получить последнюю версию (или получить конкретную версию) из системы контроля версий.
Следующая задача - развертывание базы данных. Решение, которое мне больше всего понравилось для небольших и средних проектов, состоит в том, чтобы поддерживать таблицу версий схемы в каждой базе данных и иметь все сценарии DDL и обновления данных в системе управления версиями (включая источники данных, которые они используют в сжатых архивах). Сценарии нумеруются последовательно (начиная с 000001 ..., 000002 ... и т. Д.), И сценарий развертывания, который я запускаю, сначала сначала создает резервную копию существующей базы данных, затем получает сценарий базы данных последнего запуска из таблицы версий схемы и затем запускает любые новые сценарии базы данных, найденные в системе управления версиями в правильном порядке, соответственно обновляя таблицу версий схемы.
Этот подход позволяет довольно быстро восстановить базу данных с нуля.
Два подхода, взятые вместе, позволяют быстро развернуть вашу кодовую базу на нескольких разных промежуточных машинах, в вашей среде QA, бета-версии и т. Д.
Для чуть более сложных сценариев вы должны запустить сервер непрерывной интеграции, например Kieveli et. и др. предположительно, который, по сути, регулярно «перестраивает» все ваше развертывание и поэтому содержит сценарии для выполнения именно того, что вы выполняете «вручную» выше.
Развертывание базы данных также можно сделать более сложным, создав сценарий отката для каждого сценария базы данных. Затем вы должны написать небольшое приложение контроллера, чтобы справиться с ними. Для такого рода вещей есть несколько решений OSS, и одно из них может соответствовать вашим потребностям.
НО, убедитесь, что вы никогда не будете автоматически развертывать свою базу данных в производственной среде; -)