Как работать с динамическими параметрами в TeamCity? - PullRequest
3 голосов
/ 12 апреля 2019

Я работаю над интеграцией BitBucket, TeamCity и SonarQube. Мой сценарий выглядит следующим образом:

  1. Разработчик запускает новый PR или изменяет существующий;
  2. TeamCity начинает строить PR автоматически;
  3. TeamCity отправляет результаты анализа в SonarQube через SonarQube Runner с -Dsonar.branch.name=%teamcity.build.branch%;
  4. BitBucket запрашивает подробности анализа у SonarQube по названию филиала и отображает их на странице PR.

Так что проблема в том, что я не могу определить название ветви, на которой основан PR. Вот что происходит:

  1. Я настраиваю TeamCity на прослушивание ссылки +:refs/pull-requests/*/from в спецификации ветви VCS;
  2. Когда TeamCity обнаруживает новый PR, он начинает сборку
  3. Название филиала (teamcity.build.branch) становится равным номеру PR (из-за звездочки в ссылке);
  4. BitBucket не может получить подробности анализа по названию филиала PR, потому что они хранятся в SonarQube под именем, которое равно номеру PR, а не имени филиала.

Решение 1 (динамические параметры):

  1. для определения какого-либо динамического параметра;
  2. для присвоения значения параметру на одном из этапов сборки;
  3. чтобы использовать это значение для публикации результатов анализа в SonarQube.

Решение 2:

  1. для прослушивания обеих ссылок: +:refs/pull-requests/*/from и +:refs/heads/*;
  2. для установки VCS триггера, который слушает только +:refs/heads/*;
  3. для сбоя сборки на первом этапе сборки, если не найдена ссылка на запрос извлечения для текущей ветви.

Не похоже на хорошее решение.

Так что мне кажется, что решение должно быть примерно таким:

  1. чтобы TeamCity запускала сборку при обнаружении нового PR (как он работает сейчас);
  2. чтобы определить правильное имя ветви (по хешу коммитов) и сохранить его в динамическом параметре;
  3. для передачи значения этого параметра в SonarQube Runner (-Dsonar.branch.name=%dynamic.branch...%)

Я прочитал документацию о предопределенных параметрах ветки TeamCity , но не нашел ничего полезного.

Пожалуйста, помогите мне разобраться, как его настроить.

1 Ответ

1 голос
/ 12 апреля 2019

Используя специальное служебное сообщение в вашем сценарии сборки, вы можете динамически обновлять параметры сборки прямо с шага сборки (параметры должны быть определены в разделе «Параметры» конфигурации сборки).

Взаимодействие сценариев сборки с TeamCity

echo ##teamcity[setParameter name='ddd' value='fff']

P.S. echo обязательно

...