Вопрос
Есть ли законная причина НЕ использовать SVN для развертывания на производственном уровне, или это просто случай личных предпочтений, и нет никакого реального дела против SVN?
Фон
У меня на рабочем месте есть культура помечать релизы в SVN, а затем развертывать эти выпуски непосредственно на различных веб-серверах, используя svn co
или svn switch
включая непосредственно в производство.
У меня лично есть проблема с этим, так как я считаю, что без использования сценария сборки и развертывания или какой-либо формы или автоматического развертывания вы теряете настройки среды интеграции, поскольку они недокументированы. Однако более того, у меня есть интуитивное чувство, что может быть скрытая опасность делать то, что упущено из виду, то, что еще не подняло свою уродливую голову.
Я высказал свои опасения в отношении оперативного персонала, который отвечает за развертывание кода в наших различных средах (подготовка, предварительная подготовка, производство) и т. Д. Их аргументы были в значительной степени такими, что до сих пор он работал довольно хорошо, и нет причин для изменений.
Редактировать:
Что я имею в виду о сборке и развертывании:
Например, если разработчику требуется параметр web.config, добавленный для конкретной среды. Web.config обычно не хранится в svn, поэтому эти файлы обновляются вручную без какой-либо формы сценария автоматической сборки. Поэтому, если они потеряны или OPS забудет добавить поле в файл web.config для выпуска, у вас возникнут проблемы.
Скрипт сборки, который использует XMLPoke для автоматической генерации файла web.config, подходящего для конкретной среды, идеален, поскольку у вас есть версионный скрипт, который документирует все изменения, необходимые для каждой из ваших сред.
Текущий метод сборки и развертывания
Для рассматриваемого проекта разработчик создает выпуск вручную, в других проектах этап сборки автоматизирован с помощью NANT или MSBuild, что в порядке.
Миграция базы данных для большинства проектов осуществляется с помощью сценариев БД или сценариев миграции (Migrator.NET) или пакетов CMS.
CI обычно выполняется Team City на основе проверки, у нас есть процесс проверки кода, когда все заявки оформляются в филиалах, а затем проверяются на предмет проверки на правильность и правильность / качество до проверки на соединительную линию (работает хорошо).
Однако фактическое развертывание кода в значительной степени всегда осуществляется через SVN, либо через проверку помеченного выпуска, либо, в более общем случае, коммутатора SVN. Мне странно, что мы используем наш репозиторий как часть процесса развертывания.
Конфигурация обычно не меняется очень часто, единственные вещи, которые будут в конфигурационных файлах, - это информация, специфичная для среды. Все остальное в БД.
Не поймите меня неправильно, это работает, это работает хорошо. Однако я хочу попробовать автоматизировать сборку и развертывание. Я использовал это с Rails и Capistrano, а также для личных проектов, использующих Cygwin, Nant и SSH.
Что еще более важно, мне потребуются очень конкретные действительные аргументы, чтобы заставить моих коллег перейти на использование автоматической сборки и развертывания.
Или нет никаких действительных аргументов против использования SVN специально для развертывания в производство?