Согласитесь с @Nathan Strutz, что Ant - хороший инструмент для этой цели.Еще несколько мыслей.
Вам нужен повторяемый процесс сборки, сводящий к минимуму возможности для дельт.Имея это в виду:
- SVN экспортирует сборку.
- Пометьте сборку в SVN.
- Превратите этот экспорт в .zip, что-то с установщиком и т. Д. Идея - это единое целое для проверки с набором повторяющихся шагов развертывания.1010 *
- Отправить сборку в QA.
- Если QA одобряет развертывание, встроенное в производственную среду
Перемещать целые базы кода как сборку, а не просто измененные файлы.Таким образом, вы знаете, что положено в производство - это то же самое, что было подтверждено.Рефакторинг кода, чтобы данные конфигурации не перезаписывались новой сборкой.
Что касается фактического развертывания в производственной среде, я не сталкивался с инструментом для решения нескольких серверов, для разных задач кода.Так что я думаю, что тебе лучше всего кататься самостоятельно.
Кроме того, в вашей ситуации я бы подумал о подходе, который допускает стандартизированную кодовую базу, с механизмом (т.е. API), который учитывает настройку, которую вы описываете.Иначе управлять каждым сайтом как «нестандартным» проектом очень больно.
Обновление
Обучение муравьев : Муравей в действии [книга].
В Source Control : для описываемой вами ситуации я бы сохранял базовую кодовую базу и оверлеи для каждого сайта.Экспортируйте ядро, а затем конкретный сайт.Это гарантирует, что любые обновления ядра, которые не изменяют специфичные для сайта изменения, вносят его.
Назовите эту комбинацию "сборкой".Делай билды с Ant.Поддерживайте сценарий Ant - или, возможно, более гибко - файл конфигурации ant - для каждой комбинации ядра и сайта.Отслеживайте номер версии ядра и сайта как часть данной сборки.
Если ваше программное обеспечение находится внутри установщика (например, Nullsoft Install Shield ), который должен быть частью сборки.В противном случае вы должны сгенерировать файл .zip (также возможен .ear, но никто не видел, чтобы кто-нибудь на самом деле делал это с CF).Точка является одним файлом, который охватывает всю сборку.
Этот файл сборки должен проверяться QA.Таким образом, проверка включает в себя развертывание, настройку и тестирование функциональности.Смотрите мой ответ для развертывания о том, как это может протекать.
Развертывание :
Если вы хотите автоматизировать развертывание, для его проверки необходимо задействовать QA.Это означает, что QA будет развертывать / устанавливать сборки, используя один и тот же процесс на своих серверах, прежде чем приступить к развертыванию в производственной среде.
Для этого я хотел бы создать нечто, отслеживающее, какой сервер получает какой файл сборки и какие учетные данные и информацию о подключениинеобходимо, чтобы это произошло.Скорее всего через FTP.После передачи инструмент затем извлечет файл сборки / запустит установщик.Эта последняя часть является областью, которую я должен изучить, чтобы выяснить, как можно разрешить одному серверу выполнять команды, такие как извлечение или установка, удаленно.