在天蓝色发布管道日志中,任务日志输出中生成了一个链接,我想在下一个任务中将其用作变量。 我想从日志中解析它,但无法在代理中找到日志。
我该如何解决这个问题。日志存储在代理的哪个目录中? 我已经检查了 $(System.DefaultWorkingDirectory) 但找不到日志。
您可以在管道中使用 REST API Timeline - Get 来获取管道的详细信息。在Timeline-Get的响应中,我们可以找到任务的日志url。然后我们就可以获取任务的日志来找到你需要的结果链接。
这是我的测试示例 yaml:
trigger:
- none
pool:
vmImage: ubuntu-latest
steps:
- script: |
echo "Testing"
echo "Results link: https://dev.azure.com/"
echo "Need to abort? ..."
displayName: "Runtests"
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$orgname="your org name"
$projectname="your project name"
$url = "https://dev.azure.com/$orgname/$projectname/_apis/build/builds/$(Build.BuildId)/timeline?api-version=7.1"
$TimelineResponse = Invoke-RestMethod -Uri $url -Headers @{"Authorization" = "Bearer $(System.AccessToken)"}
$loglink = $TimelineResponse.records | Where-Object { $_.name -eq "Runtests" } | Select-Object -ExpandProperty log | Select-Object -ExpandProperty url
Write-Output "The log link of task Run tests is $loglink"
$log = Invoke-RestMethod -Uri $loglink -Headers @{"Authorization" = "Bearer $(System.AccessToken)"}
$Resultslink = ($log | Select-String -Pattern "Results link: (.*)").Matches.Groups[1].Value
Write-Output "Results link is $Resultslink"
测试结果: