Я имел дело с проблемой масштабирования CI в своей компании и в то же время пытался выяснить, какой подход использовать, когда речь идет о CI и нескольких филиалах. Аналогичный вопрос есть в stackoverflow, Multiple features branch и непрерывной интеграции . Я начал новый, потому что хотел бы получить больше обсуждения и дать некоторый анализ вопроса.
На данный момент я обнаружил, что есть 2 основных подхода, которые я могу использовать (или, может быть, некоторые другие ???).
- Множественный набор заданий (здесь речь идет о Jenkins / Hudson) на ветку
- Напишите инструменты для управления дополнительными заданиями
- Массовое создание / изменение / удаление заданий
- Пользовательские настройки для каждого задания на ветку (URL SCM, дублирование репозиториев управления)
- Некоторые примеры людей, решающих эту проблему с помощью инструментов оболочки, скриптов ant и интерфейса командной строки Jenkins. Увидеть:
- http://jenkins.361315.n4.nabble.com/Multiple-branches-best-practice-td2306578.html
- http://jenkins.361315.n4.nabble.com/Is-it-possible-to-handle-multiple-branches-where-some-jobs-should-run-on-each-one-without-duplicatin-td954729. html
- http://jenkins.361315.n4.nabble.com/Parallel-development-with-branches-td1013013.html
- Настроить или создать задание Hudson автоматически
- Увеличивает нагрузку на ваш кластер CI
- Цикл обратной связи для разработчиков замедляется (если инфраструктура не может справиться с новой нагрузкой)
- Напишите инструменты для управления дополнительными заданиями
- Множественный набор заданий на 2 ветки (dev и стабильная)
- Управляйте двумя наборами вручную (если вы измените конфигурацию задания, обязательно измените в другой ветке)
- PITA, но по крайней мере так мало, чтобы управлять
- Другие дополнительные ветки не получат полный набор тестов, пока они не будут отправлены разработчикам
- Недовольные разработчики. Почему разработчику должны волновать проблемы масштабирования CI. У него есть простая просьба: когда я перейду, я хочу протестировать свой код. Просто.
- Управляйте двумя наборами вручную (если вы измените конфигурацию задания, обязательно измените в другой ветке)
Похоже, что если я хочу предоставить разработчикам CI для их собственных пользовательских веток, мне понадобятся специальные инструменты для Jenkins (API или сценарии оболочки или что-то в этом роде?) И обработать масштабирование. Или я могу посоветовать им чаще сливаться с DEV и жить без CI в пользовательских ветках. Какой из них вы бы выбрали, или есть другие варианты?