请求提供通过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
相关产品推荐
相关产品推荐

