Переезд из Геррита в Тигель

В настоящее время мы используем Gerrit для группы из примерно дюжины и некоторых разработчиков.

Это наш текущий рабочий процесс:
1. Отделы разработчиков от мастера
2. Разработчики работают в своем местном филиале
3. Разработчики нажимают на gerrit, который захватывает ведущую ветку, содержав нажатую фиксацию в refs/for/master. (Если вы не знали, gerrit также является менеджером репозитория.)
4. Геррит вызывает Дженкинса, проводит модульные тесты (и тесты Selenium) в наборе изменений. Если это не удастся, комманда возвращается разработчику. Else, Jenkins + 1s commit.
5. Рецензент просматривает commit и + 1s его
6. Старший рецензент просматривает commit и + 2s, а набор изменений объединяется в refs/head/master (т.е. Фактическая ветвь)

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

x - Intermission - x

Теперь мы собираемся перенести наше управление заданиями на Jira. Пока я настраивал его, я также создал Crucible, так как кажется естественной интеграцией, чтобы получить обзор кода, чтобы быть частью целого shebang. То, что я не могу сделать, это воспроизвести наш рабочий процесс выше, чем мы полюбили. С интеграцией Jira/Crucible, поскольку у нас больше нет нашего хранилища репозитория (и мы не хотим платить за Atlassian Stash), мы будем нажимать код на Bitbucket. Мы больше не можем работать непосредственно с мастером, потому что плохой код больше не будет "храниться в затворе", а сливается в master разработчиком, прежде чем он пройдет какие-либо тесты или проверку кода. Единственное решение, чтобы сохранить его из мастер-ветки, похоже, является вилкой. Ладно, это раздражает, но я мог бы с этим справиться. Но как мне получить комманду из вилки разработчика, чтобы она слилась в главную ветвь после прохождения проверки кода? Это то, что я хотел бы услышать от людей, которые сделали что-то даже отдаленно похожее, или знают, как это сделать, учитывая мою ситуацию.

Альтернативой всему этому является попытка установить интеграцию между Jira и Gerrit с помощью https://github.com/hobbs/jirret, но использует XML RPC, который поддерживает Jira, но не будет дольше делать какие-либо разработки для.

Ответ 1

Vic, чтобы получить изменения от вилки разработчика и привести их в основную строку кода исходного репо, вы можете использовать запросы на pull в Bitbucket. Они приветствуют отзывы о кодеках Crucible, которые вы делаете. Если форкирование является болью, вы можете попытаться создать ветвь "интеграции" в своем репо, и разработчики часто нажимают код (даже до их готовности к экспертной оценке). Эта отрасль становится видом супа, где проблемы интеграции могут возникать и разрабатываться без загрязнения. Некоторые из разработчиков Dev в Atlassian используют интеграционную ветвь, а также используют поддержку Bamboo для автоматического применения вашей схемы CI к новым ветким и автоматического слияния веток с каждой сборкой. Как правило, у вас есть Bamboo, чтобы объединить ветвь dev с интеграцией каждый раз, когда вы нажимаете код на ветку dev. Действительно полезно для поиска конфликтов раньше.

Блог Matt, связанный с описанием этого вида рабочего процесса гораздо более подробно. Основной рабочий процесс может быть успешным независимо от того, какой инструмент CI вы используете (у Bamboo действительно хорошая поддержка для него и отличная интеграция JIRA).

Надеюсь, это поможет!

Ответ 2

Если вы не против делать какое-либо программирование, вы можете использовать Jira scripting suit, чтобы использовать транзакцию рабочего процесса Jira для запуска фактического кода на вашем сервере, и соответственно обновить содержимое проблемы/статус. Чтобы отобразить динамический контент (полученный из локального файла или любого удаленного сервера), вы можете использовать плагин поведения Jira и с использованием Javascripts и HTML-кода.

Как я уже сказал, для этого потребуется некоторое программирование, но вы можете интегрировать свой оригинальный рабочий процесс с Jira.

Небольшое примечание, хотя "XML RPC, который Jira все еще поддерживает, но больше не будет заниматься разработкой", этот API очень мощный и обладает возможностями, которые отсутствуют в некоторых других API, поэтому, хотя это не будет будущее вы можете найти, что он подходит для большинства ваших потребностей, как есть.

Надеюсь, что это поможет.

Ответ 3

У меня есть билет на трекер Bitbucket прямо сейчас, спрашивая о чем-то очень похожем: https://bitbucket.org/site/master/issue/5652/allow-for-pull-requests-to-require

К сожалению, кажется, что ответ, который я получил от Atlassian, "извините, мы не собираемся этого делать. Пожалуйста, купите Stash". Проблема, с которой мы сталкиваемся, заключается в том, что Stash в настоящее время не является хостинговым решением, и мы не планируем создавать инфраструктуру для ее собственного размещения (на самом деле мы ранее DID, но, поговорив с Atlassian, перешли на их размещенные решения). Я не совсем уверен, почему они не предоставляют это как "корпоративную" особенность Bitbucket, считая, что они уже работали в Stash. Поскольку это все, что я могу сделать, это заставить людей прокомментировать этот билет, чтобы показать, что разработчики очень заинтересованы в этих типах рабочих процессов (функция, которая бы отличала его от GitHub на этом!).