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

如何通过PowerShell调用Azure DevOps API获取指定环境最新发布版本?

当然可以通过API获取环境ID啦!这其实是Azure DevOps Release API的基础能力之一,我帮你梳理下具体步骤和PowerShell代码示例:

获取发布定义对应的环境ID(以Prod为例)

首先,你需要调用Release Definitions API来获取目标发布定义下的所有环境信息,从中筛选出你需要的环境(比如"prod")对应的ID。

1. 调用Release Definitions API

使用GET请求获取指定发布定义的详细信息,返回结果里会包含所有关联的环境配置:

# 配置变量
$orgName = "你的组织名"
$projName = "你的项目名"
$definitionId = "1" # 你的目标发布定义ID
$patToken = "你的PAT令牌" # 确保PAT拥有Release相关的读写权限
$apiVersion = "6.0"

# 构建API请求URL
$defApiUrl = "https://dev.azure.com/$orgName/$projName/_apis/release/definitions/$definitionId?api-version=$apiVersion"

# 发送请求并获取发布定义详情
$releaseDefinition = Invoke-RestMethod -Uri $defApiUrl `
    -Headers @{Authorization = "Basic $([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$patToken")))"} `
    -Method Get

2. 筛选目标环境的ID

从返回的environments数组中,根据环境名称精准筛选出对应ID:

# 筛选名称为"prod"的环境ID(注意名称要和Azure DevOps门户里的完全一致,大小写敏感)
$prodEnvId = ($releaseDefinition.environments | Where-Object { $_.name -eq "prod" }).id

Write-Host "Prod环境ID: $prodEnvId"

这样你就不用硬编码环境ID了,完全通过API动态获取,既灵活又能避免环境ID变更导致的脚本失效。


后续步骤:获取Prod最新发布并部署到UAT/DEV

拿到$prodEnvId后,就可以结合你之前的部署API获取最新的Prod发布:

# 获取Prod环境的最新发布记录
$deploymentsApiUrl = "https://dev.azure.com/$orgName/$projName/_apis/release/deployments?api-version=$apiVersion&definitionId=$definitionId&definitionEnvironmentId=$prodEnvId&`$top=1"
$latestProdDeployment = Invoke-RestMethod -Uri $deploymentsApiUrl `
    -Headers @{Authorization = "Basic $([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$patToken")))"} `
    -Method Get
$targetReleaseId = $latestProdDeployment.value[0].release.id

接着用同样的方法从$releaseDefinition.environments里拿到UAT/DEV的环境ID,再调用Release Environments API触发部署:

# 假设已获取UAT环境ID $uatEnvId
$deployTriggerUrl = "https://dev.azure.com/$orgName/$projName/_apis/release/releases/$targetReleaseId/environments/$uatEnvId?api-version=$apiVersion"
$requestBody = @{ status = "inProgress" } | ConvertTo-Json

Invoke-RestMethod -Uri $deployTriggerUrl `
    -Headers @{Authorization = "Basic $([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$patToken")))"} `
    -Method Patch `
    -Body $requestBody `
    -ContentType "application/json"

小提示

  • 确保你的PAT令牌拥有Release管理的权限(至少需要"读取"和"编辑"权限)
  • 环境名称要严格匹配Azure DevOps里的显示名称,大小写敏感
  • API版本可以根据需求调整,6.0是稳定版,也可以尝试更高的预览版比如7.1-preview

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:58:01