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

Azure Pipelines代理中任务日志存储位置及链接提取问询

Azure Pipelines任务日志在代理上的存储位置及日志链接获取方案

代理上的日志存储路径

自托管代理

自托管代理的任务日志默认存储在代理工作目录的_work/_logs子目录下,完整路径示例:

  • Windows:C:\agent\_work\_logs(默认安装路径)
  • Linux/macOS:~/agent/_work/_logs(默认安装路径)

每个任务的日志以.log格式保存,文件名包含任务ID与名称相关标识。

微软托管代理

微软托管代理在任务执行完成后会被销毁,日志文件不会保留在代理本地,无法在代理上访问到这些文件。

无需解析本地日志:直接获取日志链接的方案

如果你需要将任务日志链接作为后续任务的变量,无需从本地日志文件解析,可通过Azure DevOps REST API直接获取,步骤如下:

1. 利用预定义变量获取关键ID

Release Pipeline中可直接使用以下预定义变量:

  • $(Release.Id):当前发布ID
  • $(Release.EnvironmentId):当前发布环境ID
  • $(System.JobId):当前任务所属作业ID
  • $(System.TaskInstanceId):当前任务实例ID

2. 调用REST API获取日志链接

以PowerShell任务为例,添加如下脚本(需启用任务的允许脚本访问OAuth令牌选项):

$orgUrl = "$(System.TeamFoundationCollectionUri)"
$projectName = "$(System.TeamProject)"
$releaseId = "$(Release.Id)"
$envId = "$(Release.EnvironmentId)"
$jobId = "$(System.JobId)"
$taskId = "$(System.TaskInstanceId)"
$accessToken = "$(System.AccessToken)"

$headers = @{
    "Authorization" = "Bearer $accessToken"
    "Content-Type" = "application/json"
}

# 构造日志API请求地址
$apiUrl = "$orgUrl$projectName/_apis/release/releases/$releaseId/environments/$envId/jobs/$jobId/tasks/$taskId/logs?api-version=7.1-preview.2"

# 调用API获取日志链接
$logResult = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get

# 将日志链接设置为全局变量,供后续任务使用
Write-Host "##vso[task.setvariable variable=TaskLogUrl;isOutput=true;]$($logResult.url)"

执行该脚本后,后续任务可通过$(TaskLogUrl)变量直接访问当前任务的日志链接。若需获取其他任务的日志链接,只需替换$(System.TaskInstanceId)为对应任务的实例ID即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:11:22