Как задача Azure DevOps может использовать выходные данные предыдущей задачи Azure DevOps

#azure #azure-devops

#azure #azure-devops

Вопрос:

При выполнении конвейера выпуска DevOps:

В настоящее время выполняя задачу 2, я хотел бы сослаться на выходные данные задачи 1. (Задача 1 извлекает json из вызова REST api.)

Они оба находятся в одном и том же безагентном задании (оба являются вызовами REST api). по сути, я пытаюсь «связать» их вместе и / или передать выходные данные json из задачи 1 в задачу 2

Я видел документацию по переменным, но я не уверен, смогу ли я установить переменные через выходные данные задачи 1, или даже лучше, если бы было что-то встроенное, например, $ {PreviousStep .Вывод}

Возможно ли это вообще?

Комментарии:

1. какая задача является задачей 1?

2. это задача, которая вызывает REST api

3. Ваши задачи относятся к одному и тому же заданию?

4. Да, они оба находятся в одном и том же безагентном задании (оба являются вызовами REST api). в основном пытается «связать» их вместе и / или передать выходные данные json из задачи 1 в задачу 2

5. Привет @Jbooth, как насчет проблемы? Разрешил ли приведенный ниже ответ ваш вопрос? Если нет, не могли бы вы сообщить мне последнюю информацию об этой проблеме?

Ответ №1:

Мы могли бы создать временный файл в конвейере и сохранить тело ответа в файл, а затем прочитать файл в следующей командной строке.

В моем примере я получаю определение конвейера выпуска в первой задаче power shell и сохраняю выходные данные во временный файл, а затем считываю его в следующей задаче power shell.

Пример определения конвейера

 trigger:
- none

pool:
  vmImage: 'windows-latest'


steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      New-Item $(Build.SourcesDirectory)test1.txt
      $outfile = "$(Build.SourcesDirectory)test1.txt"
      Write-Host $outfile
      $url = "https://vsrm.dev.azure.com/{Org name}/{Project name}/_apis/release/definitions/{Definition ID}?api-version=6.0-preview.4"
      Write-Host "URL: $url"
      $connectionToken="{PAT}"
      $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
      $pipelineInfo = Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
      $pipelineInfo | Out-File -FilePath $outfile
      
      

      

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $json = Get-Content -Path $(Build.SourcesDirectory)test1.txt
      Write-Host $json
  

Результат:

введите описание изображения здесь