Как автоматически создавать запросы на слияние при использовании GitLab и TeamCity

Я использую GitLab 8.3.2 и TeamCity 9.1.6. Я настроил сервис JetBrains TeamCity CI, и он запускает сборки в TeamCity, когда изменения передаются в GitLab.

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

У меня есть спецификация ветки в TeamCity:

+:refs/heads/*
+:refs/(merge-requests/*)

Я вижу запросы на слияние в TeamCity, но они на самом деле не собираются.

В запросе на слияние в GitLab написано "CI build pending for xxxx". Ссылка подробностей просмотра не содержит номер сборки, хотя. Я подозреваю, что это потому, что он ищет TeamCity, чтобы найти подходящую сборку, и не находит ее, потому что она не была запущена в первую очередь.

У меня нет никаких триггеров сборки, настроенных в TeamCity. (У меня изначально был триггер VCS, но я отключил его, как только понял, что GitLab запускает сборки для меня.)

Как я могу настроить все так, чтобы запрос на слияние запускал сборку в TeamCity и чтобы GitLab отображал результат сборки в запросе на слияние.

2 ответа

Вы должны решить, как вы хотите, чтобы сборки запускались: TeamCity, который будет запрашивать обновления GitLab, или GitLab.

Для TeamCity вам нужно будет добавить триггер VCS в конфигурацию сборки. Это создаст триггер TeamCity на ветвях, настроенных в "спецификации веток". Вы также можете ограничить количество ветвей для запуска в настройках триггера. Вам нужно будет отключить сборку запуска GitLab в TeamCity.

Для того, чтобы GitLab мог запускать сборки во всех ветвях, вам может потребоваться установить спецификацию ветвей +:(refs/head /) +:(refs / merge-запросы /), чтобы удостовериться, что ветви имеют полное имя (я предполагаю здесь).

Мне удается решить мою проблему, которая похожа на вас. На самом деле, я следую инструкциям GitLab

Конфигурация сборки в Teamcity должна использовать формат сборки%build.vcs.number%, вы также захотите настроить мониторинг всех веток, чтобы собирались запросы на слияние, этот параметр находится в расширенных настройках корневого каталога vsc.

  1. со стороны Teamcity вам нужно установить формат номера сборки как%build.vcs.number%
  2. настройте спецификацию веток в Teamcity, чтобы построить все ветки. Я использовал +:refs/глав /(*) для моего случая.

После того, как запрос на слияние создан, он проверит тот же build.vcs.number в teamcity, и когда сборка будет завершена, статус будет обновлен в запросе на слияние gitlab.

Другие вопросы по тегам