Мы используем ExpressionEngine CMS (php) для создания веб-сайтов. Для каждого сайта мы устанавливаем репозиторий subversion и фиксируем установку EE, а также любые используемые пользовательские шаблоны, изображения, javascript и т. Д. В репозиторий включен файл, содержащий все переменные среды и файл .htaccess.
У нас есть сервер разработки с рабочей копией хранилища, обновленной через post-commit, которую мы используем для разработки. Когда мы будем готовы к выпуску, мы создаем ветку в subversion, вносим любые изменения, необходимые для производственной среды, помечаем номер выпуска, экспортируем репозиторий, загружаем его в новый каталог на работающем сервере и символически связываем файлы на месте. Откат так же прост, как создание символической ссылки на предыдущий выпуск.
Проблема в том, что мы должны изменить переменные окружения, которые должны быть разными для разработчиков и производственных серверов. Это такие вещи, как (не) комментирование правил htaccess, которые перенаправляют в неправильные места, замена ключей API карты Google, потому что домены разные, запуск сценариев, которые минимизируют JavaScript в один обфусцированный файл, чтобы сохранить размер и http-соединения, и т.д. .
Вопрос в том, как это может быть более автоматизировано? Мы бы хотели довести процедуру релиза до минимума. Я знаком с существованием таких инструментов, как Capistrano и Make, но я не уверен, как заставить их изменять все необходимые файлы ... как бы вы организовали такую вещь? Стоит ли тратить время на автоматизацию, когда это происходит, может быть, раз в пару недель?