Собирайте запросы на загрузку в конкретную ветку с помощью TeamCity и Github
Я хочу, чтобы TeamCity собирал все запросы на тягу в конкретную ветвь назначения, например. develop
.
Итак, я хочу построить следующие запросы:
develop...foo_branch
develop...bar_branch
и пропустите это:
master...foo_branch
master...bar_branch
В TeamCity я могу определить branch specification
для создания всех запросов на pull:
+:refs/pull/*/head
или определить фильтр по ветки источника:
-:refs/heads/(spikes-*)
Но мне нужен фильтр с помощью target. Возможно ли это?
Ответы
Ответ 1
Я написал script, чтобы обойти эту проблему. Его можно запустить как один из первых шагов сборки в конфигурации сборки TC. script будет запрашивать детали запроса запроса от Github, анализировать ответ и указывать имена источника и целевого ветки в качестве параметров TeamCity и переменных среды. На следующих этапах сборки вы сможете прервать сборку или сделать все, что вам нужно, на основе этих переменных.
https://gist.github.com/dzzh/a6d8631e9617777fb5237bc9ec7b356b
Для работы script вам необходимо отправить PR-идентификатор в качестве аргумента командной строки. Мы используем рекомендованный refspec (refs/pulls/*/head) для запуска наших сборников, я извлекаю из него PR-идентификатор и вызываю script с ним.
Ответ 2
В настоящее время невозможно разграничить ветки запроса запроса на основе их целевой ветки в TeamCity. Пожалуйста, смотрите/проголосуйте за запрос https://youtrack.jetbrains.com/issue/TW-43759, который запланирован для предстоящей версии.