如何通过TeamCity中的API为特定分支触发新构建

如何通过TeamCity中的API为特定分支触发新构建,teamcity,gitlab,webhooks,Teamcity,Gitlab,Webhooks,在官方文档中,我发现了如何通过API触发新构建,并在TeamCity中指定注释、属性,但不指定分支名称。这个想法是在合并请求被标记为版本时(我在配置中使用标记作为分支),从GitLab为标记分支触发一个新的构建。在TeamCity中,我在分支规范(:refs/merge requests/*)中添加了排除规则,因为我不想构建每个合并请求,因为其他分支通常也有很多这样的请求。此规则也适用于最近向主控和标记发出的合并请求。因此,我没有用于标记合并请求的构建 我想从GitLab触发一个新的构建(在检测

在官方文档中,我发现了如何通过API触发新构建,并在TeamCity中指定注释、属性,但不指定分支名称。这个想法是在合并请求被标记为版本时(我在配置中使用标记作为分支),从GitLab为标记分支触发一个新的构建。在TeamCity中,我在分支规范(:refs/merge requests/*)中添加了排除规则,因为我不想构建每个合并请求,因为其他分支通常也有很多这样的请求。此规则也适用于最近向主控和标记发出的合并请求。因此,我没有用于标记合并请求的构建

我想从GitLab触发一个新的构建(在检测到新标记时添加一个webhook),但不知道是否可以指定使用哪个分支


谢谢。

在谷歌搜索了一段时间后,我终于找到了答案。要触发特定分支的生成,应将
branchName=“v1.26.1”
(当我使用标记作为分支特性时,我指定了标记名)属性添加到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"
$Username='!用户名
$Password='!密码
$BuildTypeId='!来自teamcity的生成类型id!'
$Pair=“$($Username):$($Password)”
$EncodedCredentials=[System.Convert]::tobase64字符串([System.Text.Encoding]::ASCII.GetBytes($Pair))
$Headers=@{
授权=“基本$EncodedCredentials”;
Accept=“application/json”
}
$Body='构建是由GitLab触发的。“-替换“#{buildTypeId}”,$buildTypeId
调用WebRequest-Uri'http://teamcity.host/httpAuth/app/rest/buildQueue'-Method POST-Body$Body-UseBasicParsing-Headers$Headers-ContentType“application/xml”

Hi。你是怎么从GitLab开过来的?