Как запустить новую сборку для конкретной ветки через API в TeamCity

В официальной документации я нашел, как вызвать новую сборку через API и указать комментарий, свойства, но не имя ветки в TeamCity. Идея состоит в том, чтобы запустить новую сборку из GitLab для ветви тегов, когда запрос на слияние был помечен версией (я использую теги в качестве ветвей в конфигурации). В TeamCity я добавил правило исключения в спецификацию ветки (-:refs/merge-запросы /*), так как я не хочу создавать каждый запрос на слияние, так как обычно у нас их много и для других веток. Это правило также применяется к запросу на объединение, который был недавно сделан мастеру и помечен. В результате у меня нет сборок для помеченных запросов на слияние.

Я хочу запустить новую сборку из GitLab (добавить веб-крючок при обнаружении нового тега), но не знаю, можно ли указать, какую ветку использовать?

Спасибо.

1 ответ

Пройдя некоторое время, погуглив, я наконец нашел ответ. Чтобы запустить сборку для определенной ветви, branchName="v1.26.1" (поскольку я использую теги в качестве ответвления, я указал имя тега), атрибут должен быть добавлен к <build> тег в запросе XML.

Вот пример в Powershell, как запустить новую сборку в TeamCity для определенного тега / ветви:

$Username = '!username!'
$Password = '!password!'
$BuildTypeId = '!build type id from teamcity!'

$Pair = "$($Username):$($Password)"
$EncodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Pair))
$Headers = @{
  Authorization = "Basic $EncodedCredentials";
  Accept = "application/json"
}

$Body = '<build branchName="v1.26.1"><buildType id="#{buildTypeId}"/><comment><text>Build was triggered by GitLab.</text></comment><properties /></build>' -Replace "#{buildTypeId}", $BuildTypeId
Invoke-WebRequest -Uri 'http://teamcity.host/httpAuth/app/rest/buildQueue' -Method POST -Body $Body -UseBasicParsing -Headers $Headers -ContentType "application/xml"
Другие вопросы по тегам