Как я могу настроить сборку hudson (или jenkins) из ветвей выпуска / исправления, используя модель ветвления git-flow?

#git #hudson #jenkins #git-flow

#git #хадсон #дженкинс #git-flow

Вопрос:

Моя компания переходит с svn на git, и я изучаю различные модели ветвления. Пока мне больше всего нравится git-flow, но у меня есть одна серьезная нерешенная проблема с ним.

Мы используем hudson (скоро станет jenkins) для нашего CI-сервера. Существует 5 приложений с 3 средами в каждом: разработка, контроль качества и производство. С помощью git-flow было бы очевидно указать сборку разработки на ветку «разработка», а производственную сборку — на ветку «мастер», но каков наилучший способ настройки, чтобы мы могли легко перенаправить среду контроля качества на последнюю ветку исправления или выпуска, еслиодин существует или разрабатывается, если нет. В настоящее время мы просто обновляем задания jenkins вручную, но изменение 5 заданий вручную сопряжено с трудностями (и подвержено ошибкам).

Некоторые вещи, которые я рассмотрел:

  1. Добавление ветки контроля качества и слияние с ней из ветвей выпуска / исправления. Это не для начинающих, потому что нам нужно не забывать сливаться с веткой qa всякий раз, когда мы вносим изменения в release / hotfix, и это быстро устаревает.

  2. Создаем символическую ссылку «refs / heads / qa» и просто обновляем ее, чтобы указать на то, что мы хотим, чтобы QA тестировал. Это лучше, чем указано выше, но не работает, потому что нам нужно будет обновить symref на нашем сервере git, а у обычных разработчиков нет на это разрешений.

Пока что ни один из этих вариантов не кажется мне жизнеспособным, есть ли какие-то другие варианты, которые мне не хватает? Спасибо.

Ответ №1:

Я не совсем понимаю специфику вашего вопроса, но как насчет этого:

В конфигурации сборки установите флажок «Эта сборка параметризована», затем создайте строку или параметр выбора с именем «branch» (или аналогичный), который по умолчанию соответствует вашей ветке разработки.

Затем в конфигурации git, где обычно указывается имя ветки, используйте «$ {branch}» вместо жесткого кодирования имени ветки.

Если сборка запускается автоматически, она будет использовать ветку разработки. Но когда вы запускаете сборку вручную, вы получите возможность указать новое имя ветки.

Комментарии:

1. Это не идеально, но, похоже, в настоящее время это самый простой ответ. Учитывая, что я также могу написать скрипт для запуска нескольких сборок с учетом конкретной ветки, это, вероятно, будет работать хорошо.

2. Отлично. Если у вас есть еще вопросы, вы, вероятно, получите больше ответов в списке рассылки jenkins-users .