You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供通过TeamCity构建URL获取最新构建编号的PowerShell脚本

PowerShell脚本:通过TeamCity构建URL获取最新构建编号

如果你需要从TeamCity的构建作业URL中提取该作业的最新构建编号,下面这个脚本应该能帮到你。它利用TeamCity的REST API来查询最新构建信息,支持凭证认证和令牌认证两种方式,还能灵活调整查询条件。

前置条件

  • 你的TeamCity服务器可以正常访问
  • 拥有该构建作业的访问权限(对应的账号或令牌)
  • 构建URL中包含buildTypeId参数(这是TeamCity构建页面的标准格式,比如https://your-teamcity/viewType.html?buildTypeId=Project_BuildJob)

完整脚本

function Get-TeamCityLatestBuildNumber {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true)]
        [string]$BuildUrl,
        
        [Parameter(Mandatory=$true)]
        [string]$TeamCityServer,
        
        [Parameter(Mandatory=$true, ParameterSetName="CredentialAuth")]
        [pscredential]$Credentials,
        
        [Parameter(Mandatory=$true, ParameterSetName="TokenAuth")]
        [string]$AuthToken,
        
        [string]$BuildLocator = "running:false,count:1"
    )

    # 从构建URL中提取buildTypeId参数
    $uri = [Uri]$BuildUrl
    $queryParams = [System.Web.HttpUtility]::ParseQueryString($uri.Query)
    $buildTypeId = $queryParams["buildTypeId"]

    if (-not $buildTypeId) {
        throw "无法从提供的URL中提取buildTypeId,请确保URL包含该查询参数。"
    }

    # 构造REST API请求地址
    $apiUrl = "$TeamCityServer/app/rest/buildTypes/id:$buildTypeId/builds?locator=$BuildLocator"

    try {
        # 准备请求参数
        $invokeParams = @{
            Uri = $apiUrl
            ContentType = "application/json"
            Method = "Get"
        }

        # 根据认证方式添加对应参数
        if ($PSCmdlet.ParameterSetName -eq "CredentialAuth") {
            $invokeParams["Credential"] = $Credentials
        }
        else {
            $invokeParams["Headers"] = @{ "Authorization" = "Bearer $AuthToken" }
        }

        # 发送API请求
        $response = Invoke-RestMethod @invokeParams

        # 检查是否返回构建信息
        if (-not $response.builds.build) {
            Write-Warning "未找到符合条件的构建记录。"
            return $null
        }

        # 返回最新构建编号
        return $response.builds.build.number
    }
    catch {
        throw "获取构建编号时出错:$_"
    }
}

使用示例

方式1:使用账号密码认证

# 获取用户凭证
$teamCityCreds = Get-Credential -Message "输入TeamCity账号密码"

# 调用函数获取最新构建编号
$latestBuildNum = Get-TeamCityLatestBuildNumber `
    -BuildUrl "https://your-teamcity-server/viewType.html?buildTypeId=YourProject_YourBuildJob" `
    -TeamCityServer "https://your-teamcity-server" `
    -Credentials $teamCityCreds

# 输出结果
Write-Host "最新构建编号:$latestBuildNum"

方式2:使用令牌认证

如果你用的是TeamCity的个人访问令牌,可以这样调用:

$authToken = "your-teamcity-personal-access-token"

$latestBuildNum = Get-TeamCityLatestBuildNumber `
    -BuildUrl "https://your-teamcity-server/viewType.html?buildTypeId=YourProject_YourBuildJob" `
    -TeamCityServer "https://your-teamcity-server" `
    -AuthToken $authToken

Write-Host "最新构建编号:$latestBuildNum"

自定义查询条件

脚本中的BuildLocator参数可以调整,来获取不同条件的构建:

  • 获取最新成功构建:running:false,status:SUCCESS,count:1
  • 获取最新失败构建:running:false,status:FAILURE,count:1
  • 包含正在运行的构建:running:true,count:1

内容的提问来源于stack exchange,提问作者Nitish Jaiswal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:51:01