управление конфигурацией выпуска

Наши поставки Windows имеют разные наборы файлов конфигурации и двоичных ресурсов для разных клиентов. В настоящее время настройка выполняется вручную перед упаковкой, что чревато ошибками. Что вы думаете об использовании веток для каждого клиента и автоматической сборке/скрипте пакета ветки клиента с транком?

Меня меньше волнует масштабируемость, чем автоматизация как можно скорее.

Все содержимое пакета находится в SVN, но ветвление и слияние SVN настолько деликатны, что я не верю, что он будет работать последовательно, когда он автоматизирован. Если вам, ребята, нравится эта идея, я могу попробовать использовать для этого git-svn, потому что, надеюсь, это сделает слияние менее деликатным. Нам не обязательно объединять ресурсы, потому что они организованы таким образом, что программа установки может просто пропустить неподходящие деревья каталогов, но настройка не так проста.


person Dustin Getz    schedule 11.11.2008    source источник


Ответы (3)


Я полагаю, это зависит от того, сколько вещей нужно изменить. Что касается файлов конфигурации, мне нравится держать один файл под управлением исходного кода и использовать сценарий сборки для установки элементов, специфичных для среды (или, в вашем случае, для клиента).

http://automaticchainsaw.blogspot.com/2008/02/automate-config-changes-for-Different.html

Для двоичных файлов это, вероятно, больше связано с тем, сколько их у вас есть и откуда они берутся. Если они являются частью компиляции кода, то в идеале процесс компиляции создаст то, что вам нужно. Если это другие ресурсы, например графика, возможно, у вас есть пользовательский набор папок в одном каталоге. Сценарий сборки выберет правильную папку клиента на основе параметра, переданного сценарию. Это в основном идея ветки и слияния, которую вы упомянули в своем вопросе.

Что касается вашего более позднего комментария об изменениях многострочной конфигурации - если это xml, вы можете посмотреть класс XmlMassUpdate в задачах сообщества MSBuild. Я сам не использовал его, но, похоже, это может быть то, что вам нужно.

person Pedro    schedule 11.11.2008
comment
да, управление бинарными активами именно так, как мы его настроили. для текстовых изменений мне нравится это для небольшого количества однострочных изменений поля, но для многострочных изменений (полное удаление или добавление строк), я думаю, это становится действительно сложным, и его все еще нужно отслеживать вручную. . - person Dustin Getz; 11.11.2008

Вы не указываете, какой язык, но можете подумать о том, чтобы сделать условная компиляция:

#If FirstCustomer Then
   ' <code specific to the FirstCustomer version>.
#ElseIf SecondCustomer Then
   ' <code specific to the SecondCustomer version>.
#Else
        ' <code specific to other versions>.
#End If
person Brian Schmitt    schedule 11.11.2008

Это может произойти для разных клиентов, сред (QA, Staging, Production,...), регионов (США, ЕС, Азия,...) или разных типов приложений (если вам нужно настроить сервер, когда он обслуживает мобильный клиент). а не в Интернете или на рабочем столе).

Обычно люди либо поддерживают файлы конфигурации вручную (как вы упомянули), что подвержено ошибкам и небезопасно. Или «загляните и поместите» правильные значения в файлы конфигурации и из них, используя сценарий сборки, как упоминал Педро. Этот подход также означает, что при каждом изменении кода, влияющем на конфигурацию, должен меняться и сценарий, что не идеально. Кроме того, отладка и тестирование этих скриптов (на каком бы языке они ни были) обычно сложны, если не невозможны.

Столкнувшись с вашей конкретной проблемой, мы разработали решение, основанное на центральном сервере конфигурации, который передает конфигурацию клиентам. Сервер поддерживает наследование значений, аудит и управление версиями изменений, создание шаблонов и даже изменения во время выполнения, передаваемые клиенту в режиме реального времени.

Мы очень близки к тому, чтобы выпустить эту услугу в качестве облачного решения для управления конфигурацией. Если вы хотите попробовать его, подпишитесь на бета-версию на http://woot.configchief.com.

person Khash    schedule 10.01.2012