Как автоматически создавать запросы на слияние при использовании 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.
- со стороны Teamcity вам нужно установить формат номера сборки как%build.vcs.number%
- настройте спецификацию веток в Teamcity, чтобы построить все ветки. Я использовал +:refs/глав /(*) для моего случая.
После того, как запрос на слияние создан, он проверит тот же build.vcs.number в teamcity, и когда сборка будет завершена, статус будет обновлен в запросе на слияние gitlab.