首页 文章

获取TeamCity构建状态

提问于
浏览
0

我有Teamcity运行构建,它具有* .msi安装程序的工件输出,我需要标记成功和失败的测试构建,类似于

<filename>_<build_status>.msi

即使某些测试失败,我也设置了TC来构建安装程序,以便将它发送给我们的测试人员 . 所以问题是从TeamCity环境中接收构建状态,而不使用REST .

2 回答

  • 2

    我意识到您说您不想使用REST,但您需要做的就是对此URL执行GET请求,替换您的构建配置ID . IMO这是最简单的方法(前提是安装程序构建配置是一个单独的构建)

    /httpAuth/app/rest/builds/buildType:Installer_Build/status
    

    如果您需要帮助实现这一点,请告诉我 .

    实施

    1)添加要设置为GET请求输出的参数

    2)添加PowerShell步骤并将代码作为源代码运行 - Get Build Status Gist

    3)更新下面突出显示的相关参数以匹配您的设置

    enter image description here

    希望这可以帮助

  • 0

    我用于其他SO问题剂量的这个答案也适用于这个 .

    它适用于TeamCity Enterprise 2017.1.2(build 46812)

    Here你可以找到我的原始答案 .

    [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
    Write-Host "##teamcity[setParameter name='Status' value='$status']"
    

相关问题