Azure Pipelines 任务日志存储在代理中的位置

问题描述 投票:0回答:1

我们需要什么

在天蓝色发布管道日志中,任务日志输出中生成了一个链接,我想在下一个任务中将其用作变量。 我想从日志中解析它,但无法在代理中找到日志。

我该如何解决这个问题。日志存储在代理的哪个目录中? 我已经检查了 $(System.DefaultWorkingDirectory) 但找不到日志。

azure-pipelines devops azure-pipelines-release-pipeline
1个回答
0
投票

您可以在管道中使用 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"

测试结果:

© www.soinside.com 2019 - 2024. All rights reserved.