TeamCity构建状态参数

时间:2014-07-31 20:58:11

标签: parameters teamcity-8.0

我可能会忽略TeamCity中的内置参数。我试图将构建状态作为参数发送到控制台应用程序。控制台应用程序是一个构建步骤,即使先前的步骤失败也需要运行。如果先前的步骤失败,它将做一件事,如果前面的步骤成功,它将做另一件。

我已将控制台应用程序设置为采用构建状态参数,但我没有找到要使用的内置构建状态参数(成功/失败)。我错过了一些容易的事吗?如何访问构建状态?

谢谢!

3 个答案:

答案 0 :(得分:6)

我过去不得不做类似的事情,并没有设法找到我可以注入的内置财产来传递状态。

最后,我在之前的构建步骤中使用了服务消息将参数传递到后续步骤 - 打印出类似##teamcity[setParameter name='build.state' value='ok']的消息可用于创建构建属性,以便将状态从一个步骤传递到另一个步骤。

我看到有人采用TeamCity REST API的方法从构建步骤查询正在运行的构建的状态,但先前的方法对我来说很简单。

答案 1 :(得分:1)

我最终使用了此处找到的解决方案:

http://mnaoumov.wordpress.com/2013/01/31/get-teamcity-build-status-from-powershell/

我刚刚在我的控制台应用程序中使用C#创建了相同的逻辑来获取构建状态。

答案 2 :(得分:0)

我已经尝试了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版本更改。

希望它有所帮助。