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

如何提取Azure DevOps组织下所有项目的全量发布记录

Azure DevOps全组织发布记录统计方案

问题结论

目前Azure DevOps官方没有提供可直接获取全组织所有项目发布记录的单一全局API,所有Release类接口均为项目维度,必须传入项目名称/ID作为参数。

可直接使用的实现方案

方案1:PowerShell遍历导出脚本

前置要求:

  1. 你拥有组织级项目读取权限、所有目标项目的发布记录读取权限
  2. 创建个人访问令牌(PAT),权限勾选Project and Team (Read)、Release (Read)
# 配置参数
$orgName = "你的组织名称"
$pat = "你的PAT令牌"
$exportPath = "C:\AzureDevOps_全组织发布记录.csv"
$startTime = "2024-01-01" # 按需调整统计起始时间

# 构造认证头
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$pat)))
$headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}

# 1. 获取全组织所有项目列表
$projectsUri = "https://dev.azure.com/$orgName/_apis/projects?api-version=6.0&`$top=1000"
$projects = (Invoke-RestMethod -Uri $projectsUri -Headers $headers -Method Get).value

$allReleases = @()

# 2. 遍历每个项目拉取发布记录
foreach ($project in $projects) {
    Write-Host "正在处理项目:$($project.name)"
    $releaseUri = "https://vsrm.dev.azure.com/$orgName/$($project.name)/_apis/release/releases?api-version=6.0&minCreatedTime=$startTime&`$top=1000"
    do {
        $response = Invoke-RestMethod -Uri $releaseUri -Headers $headers -Method Get
        $allReleases += $response.value | Select-Object @{n='项目名';e={$project.name}}, name, id, createdOn, createdBy, status, @{n='发布定义名';e={$_.releaseDefinition.name}}
        $releaseUri = $response.continuationToken ? "https://vsrm.dev.azure.com/$orgName/$($project.name)/_apis/release/releases?api-version=6.0&minCreatedTime=$startTime&`$top=1000&continuationToken=$($response.continuationToken)" : $null
    } while ($releaseUri)
}

# 3. 导出到CSV文件
$allReleases | Export-Csv -Path $exportPath -Encoding UTF8 -NoTypeInformation
Write-Host "导出完成,文件路径:$exportPath"

方案2:Azure DevOps CLI 轻量脚本

前置要求:已安装Azure CLI和Azure DevOps扩展,执行az login登录后设置默认组织az devops configure --defaults organization=https://dev.azure.com/你的组织名

# 获取所有项目名称
projects=$(az devops project list --query "value[].name" -o tsv)
output_file="AzureDevOps_全组织发布记录.csv"

# 写入CSV表头
echo "项目名,发布名称,发布ID,创建时间,创建人,状态,发布定义名" > $output_file

# 遍历项目拉取发布记录
for project in $projects
do
    echo "处理项目:$project"
    az pipelines release list --project "$project" --query "[].{project:'$project', name:name, id:id, createdOn:createdOn, createdBy:createdBy.displayName, status:status, definitionName:releaseDefinition.name}" -o tsv | sed 's/\t/,/g' >> $output_file
done

echo "导出完成:$output_file"

方案3:自动化定时报表Pipeline

如果需要每月自动统计,可直接在Azure DevOps中创建定时运行的Pipeline:

  • 选用微软托管的Ubuntu/Windows代理即可,无需自有服务器
  • Pipeline权限配置:开启允许脚本访问OAuth令牌,为构建服务账号授予组织级项目读取、发布读取权限
  • 执行上述脚本后,将生成的CSV作为Pipeline制品留存,也可配置自动邮件通知发送给相关负责人
  • 触发规则设置为每月1号自动运行,无需人工干预

优化建议

如果仅需统计每月发布次数,可在调用发布接口时添加minCreatedTime和maxCreatedTime参数过滤指定月份的记录,同时控制$top参数的数值,减少接口请求量,避免触发Azure DevOps接口限流规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:02