Я занимаюсь проблемой масштабирования CI в моей компании и в то же время пытаюсь выяснить, какой подход следует предпринять, когда дело доходит до CI и нескольких веток. Аналогичный вопрос возникает в stackoverflow, Несколько ветвей функций и непрерывная интеграция. Я начал новый, потому что хотел бы продолжить обсуждение и дать некоторый анализ в вопросе.
До сих пор я обнаружил, что есть два основных подхода, которые я могу предпринять (или, может быть, некоторые другие???).
- Несколько заданий (говоря о Дженкинсе/Хадсоне здесь) за каждую ветку
- Инструмент записи для управления дополнительными заданиями
- Создать/изменить/удалить Задания в массовом порядке
- Пользовательские настройки для каждого задания на каждую ветку (дублирование URL-адресов сервера, дублирование ссылок)
- Некоторые примеры решения этой проблемы с помощью инструментов оболочки, скриптов ant и JIINKI CLI. Видеть:
- 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
- Цикл обратной связи для разработчиков замедляется (если инфраструктура не может обрабатывать новую нагрузку)
- Инструмент записи для управления дополнительными заданиями
- Множество заданий на две ветки (dev и stable)
- Управляйте двумя наборами вручную (если вы измените конфиг задания, то обязательно измените его в другой ветке)
- PITA, но по крайней мере так мало, чтобы управлять
- Другие дополнительные ветки не получат полный набор тестов, прежде чем они будут перенаправлены на dev
- Неудовлетворенные разработчики. Почему разработчик должен заботиться о проблемах масштабирования CI. У него простой запрос, когда я вхожу в ветку, я бы хотел проверить свой код. Простой.
- Управляйте двумя наборами вручную (если вы измените конфиг задания, то обязательно измените его в другой ветке)
Итак, кажется, что если я хочу предоставить разработчикам CI для своих собственных ветвей, мне нужен специальный инструмент для Jenkins (API или shellscripts или что-то?) и масштабирование ручек. Или я могу сказать им, чтобы они чаще сливались с DEV и жили без CI в пользовательских ветких. Какой из них вы бы взяли или есть другие варианты?