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

如何通过API获取特定构建ID的成功流水线日志(非工件方式)

Azure DevOps流水线日志获取(纯文本/文件形式)

前置条件

  • 拥有目标Azure DevOps组织、项目的访问权限,至少需具备流水线读取权限
  • 生成有效的个人访问令牌(PAT),权限范围需勾选Build (read)或Pipelines (read)
  • 已知目标流水线的pipelineId、对应运行的runId,以及组织名、项目名

实现逻辑

你之前调用的API仅返回日志元数据列表(包含各步骤日志的ID、时间等信息),要获取实际输出日志,需先拿到这些元数据,再通过每个日志ID调用专属API获取纯文本内容。

PowerShell实现示例

  1. 获取日志元数据列表
$org = "你的组织名"
$project = "你的项目名"
$pipelineId = "目标流水线ID"
$runId = "目标运行ID"
$pat = "你的PAT令牌"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))

# 调用API获取日志元数据
$logsMetadata = Invoke-RestMethod -Uri "https://dev.azure.com/$org/$project/_apis/pipelines/$pipelineId/runs/$runId/logs?api-version=6.0-preview.1" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
  1. 获取并保存实际日志
  • 合并所有步骤日志到单个文件:
$allLogs = @()
foreach ($log in $logsMetadata.value) {
    # 调用单个日志ID的API获取纯文本内容
    $logContent = Invoke-RestMethod -Uri "https://dev.azure.com/$org/$project/_apis/pipelines/$pipelineId/runs/$runId/logs/$($log.id)?api-version=6.0-preview.1" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
    $allLogs += $logContent
}
# 保存为文本文件
$allLogs | Out-File -FilePath "pipeline-run-full-logs.txt" -Encoding utf8
  • 单独保存每个步骤的日志:
foreach ($log in $logsMetadata.value) {
    $logContent = Invoke-RestMethod -Uri "https://dev.azure.com/$org/$project/_apis/pipelines/$pipelineId/runs/$runId/logs/$($log.id)?api-version=6.0-preview.1" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
    $logContent | Out-File -FilePath "pipeline-step-$($log.id)-logs.txt" -Encoding utf8
}

可用途径

  • PowerShell:适合Windows环境快速自动化获取
  • curl命令:适用于Linux/macOS或命令行场景
    # 获取日志元数据
    curl -u :<你的PAT> "https://dev.azure.com/<组织名>/<项目名>/_apis/pipelines/<pipelineId>/runs/<runId>/logs?api-version=6.0-preview.1"
    
    # 获取单个日志内容并保存
    curl -u :<你的PAT> "https://dev.azure.com/<组织名>/<项目名>/_apis/pipelines/<pipelineId>/runs/<runId>/logs/<logId>?api-version=6.0-preview.1" > step-log.txt
    
  • 编程语言(Python/Java等):通过HTTP请求库实现相同逻辑,先获取元数据列表,再循环拉取每个日志内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:03:27