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

如何从TFS 2015获取构建成功详情并导出TXT?需用什么API?

嘿,我来帮你搞定这个TFS 2015的需求!下面一步步给你讲清楚怎么获取带关联变更和工作项的构建详情,以及对应的API细节~

一、核心API:TFS REST API v2.0

TFS 2015官方提供了REST API v2.0来获取构建全量详情,包括你需要的关联变更和工作项。这个API是最通用的方案,不管你用脚本还是代码都能轻松调用。

要获取指定构建的完整信息,用这个端点:
GET http://{tfs-server}:8080/tfs/{collection}/{project}/_apis/build/builds/{buildId}?api-version=2.0&includeWorkItems=true&includeChanges=true

参数说明:

  • {tfs-server}:你的TFS服务器地址(比如tfsserver01)
  • {collection}:团队项目集合名称(比如DefaultCollection)
  • {project}:目标项目的名称
  • {buildId}:你要查询的构建ID(可以从构建成功的URL里直接拿到,比如URL里的buildId=1234)
  • includeWorkItems=true:强制返回关联的工作项数据
  • includeChanges=true:强制返回关联的变更集/提交记录
二、调用API并保存为.txt文件

这里给你两种实用方案,选你顺手的来:

方案1:PowerShell脚本(Windows环境首选)

PowerShell能直接处理JSON响应,还能轻松格式化内容保存成txt,而且自带身份验证适配TFS的域账号:

# 先配置你的参数
$tfsServer = "http://your-tfs-server:8080/tfs"
$collection = "YourCollection"
$project = "YourProject"
$buildId = "1234" # 替换成你的构建ID
$outputFile = "BuildSuccessDetails.txt"

# 拼接API请求地址
$apiUrl = "$tfsServer/$collection/$project/_apis/build/builds/$buildId?api-version=2.0&includeWorkItems=true&includeChanges=true"

# 发送请求(用当前登录账号验证,需要其他账号就改成 -Credential (Get-Credential))
$buildData = Invoke-RestMethod -Uri $apiUrl -Method Get -UseDefaultCredentials

# 整理成易读的文本内容
$txtContent = @"
构建成功详情
====================================
构建ID: $($buildData.id)
构建编号: $($buildData.buildNumber)
构建状态: $($buildData.status)
完成时间: $($buildData.finishTime)

关联工作项列表:
====================================
"@

# 遍历添加工作项信息
foreach ($workItem in $buildData.workItems) {
    $txtContent += "ID: $($workItem.id) | 标题: $($workItem.title) | 类型: $($workItem.fields.'System.WorkItemType')`n"
}

$txtContent += @"

关联变更记录:
====================================
"@

# 遍历添加变更信息
foreach ($change in $buildData.changes) {
    $txtContent += "变更ID: $($change.id) | 作者: $($change.author.displayName) | 注释: $($change.comment)`n"
}

# 保存到txt文件
$txtContent | Out-File -FilePath $outputFile -Encoding UTF8

Write-Host "搞定!构建详情已经保存到 $outputFile"

方案2:curl命令行(跨平台适用)

如果你习惯用命令行,或者在Linux/macOS环境下,用curl配合jq(JSON解析工具)就能快速搞定:

# 配置参数
TFS_SERVER="http://your-tfs-server:8080/tfs"
COLLECTION="YourCollection"
PROJECT="YourProject"
BUILD_ID="1234"
OUTPUT_FILE="BuildSuccessDetails.txt"

# 发送请求并格式化输出到txt(需要先安装jq)
curl -u "你的用户名:你的密码" "$TFS_SERVER/$COLLECTION/$PROJECT/_apis/build/builds/$BUILD_ID?api-version=2.0&includeWorkItems=true&includeChanges=true" | jq -r '
"构建成功详情\n====================================",
"构建ID: \(.id)",
"构建编号: \(.buildNumber)",
"构建状态: \(.status)",
"完成时间: \(.finishTime)",
"\n关联工作项列表:\n====================================",
(.workItems[] | "ID: \(.id) | 标题: \(.title) | 类型: \(.fields."System.WorkItemType")"),
"\n关联变更记录:\n====================================",
(.changes[] | "变更ID: \(.id) | 作者: \(.author.displayName) | 注释: \(.comment)")
' > $OUTPUT_FILE

注:如果是Windows的Git Bash,记得加--ntlm参数适配域账号认证:curl --ntlm -u : ...

三、通过构建成功URL自动提取构建ID

如果你的构建成功URL是类似http://{tfs-server}:8080/tfs/{collection}/{project}/_build?buildId=1234&_a=summary这样的,你可以自动提取buildId参数,不用手动输入。比如在PowerShell里加这段代码:

$buildUrl = "http://your-tfs-server:8080/tfs/YourCollection/YourProject/_build?buildId=1234&_a=summary"
$uri = [Uri]$buildUrl
$buildId = ($uri.Query.Split('&') | Where-Object { $_ -like 'buildId=*' } | ForEach-Object { $_.Split('=')[1] })

把这段加到前面的PowerShell脚本里,就能实现从URL自动获取构建ID啦。

四、关于TFS的API支持

肯定的!Team Foundation Server 2015完全提供了返回构建详情的API,就是我们上面用的Build REST API v2.0。除此之外,你也可以用.NET客户端库(Microsoft.TeamFoundationServer.Client)来编写C#代码实现,但REST API更轻量化,不需要编译,适合快速自动化场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:23:19