【问题标题】:TeamCity build status parameterTeamCity 构建状态参数
【发布时间】:2014-09-23 23:37:16
【问题描述】:
我可能忽略了 TeamCity 中的内置参数。我正在尝试将构建状态作为参数发送到控制台应用程序。控制台应用程序是一个构建步骤,即使前面的步骤失败,它也需要运行。如果前面的步骤失败,它会做一件事,如果前面的步骤成功,它会做另一件事。
我已将控制台应用程序设置为采用构建状态参数,但我没有找到要使用的内置构建状态参数(成功/失败)。我错过了一些简单的事情吗?如何访问构建状态?
谢谢!
【问题讨论】:
标签:
parameters
teamcity-8.0
【解决方案1】:
过去我不得不做类似的事情,但没能找到可以注入来传递状态的内置属性。
最后,我在上一个构建步骤中使用服务消息将参数传递到后续步骤 - 打印出类似 ##teamcity[setParameter name='build.state' value='ok'] 的消息可用于创建构建属性以将状态从一个步骤线程化到另一个步骤。
我看到有人使用 TeamCity REST API 从构建步骤中查询正在运行的构建状态,但之前的方法对我来说足够简单。
【解决方案3】:
我已经尝试过link in the answer by user2097151 中的代码,但一开始并没有奏效。所以我修改了它。我将在此处发布修改:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
$buildId = "%teamcity.build.id%"
function TeamCityBuildStatus
{
param
(
[string] $ServerUrl,
[string] $UserName,
[string] $Password,
[string] $BuildId
)
$client = New-Object System.Net.WebClient
$pair = "$($UserName):$Password"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$client.Headers.Add("Authorization", "Basic $encodedCreds")
$url = "https://$ServerUrl/httpAuth/app/rest/builds/$buildId/status"
$status = $client.DownloadString($url)
return $status -eq "SUCCESS"
}
$status = TeamCityBuildStatus -ServerUrl $teamcityUrl -UserName $teamcityUser -Password $teamcityPass -BuildId $buildId
此解决方案不会在这是最后一个版本中中继。
我在this 线程中找到的发送凭据的方式。
还有我在this线程中发现的TLS版本变化。
希望对某人有所帮助。