Я немного боюсь, что это лучшее, что ты можешь сделать. Если ваша цель состоит в том, чтобы установить переменную за один шаг, а продолжить за другой.
Вы также можете проверить Совместное использование переменных по конвейерам
Например:
steps:
- task: MyTask@1 # this step generates the output variable
name: ProduceVar # because we're going to depend on it, we need to name the step
- script: echo $(ProduceVar.MyVar) # this step uses the output variable
Вы также можете рассмотреть переменные нескольких заданий, если это соответствует вашим потребностям:
jobs:
# Set an output variable from job A
- job: A
pool:
vmImage: 'vs2017-win2016'
steps:
- powershell: echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the value"
name: setvarStep
- script: echo $(setvarStep.myOutputVar)
name: echovar
# Map the variable into job B
- job: B
dependsOn: A
pool:
vmImage: 'ubuntu-16.04'
variables:
myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutputVar'] ] # map in the variable
# remember, expressions require single quotes
steps:
- script: echo $(myVarFromJobA)
name: echovar
РЕДАКТИРОВАТЬ Если вы хотите получить выходные данные данного шага, вы можете использовать Azure DevOps Rest API. Ниже вы найдете пример:
trigger:
branches:
include:
- master
paths:
include:
- stackoverflow/07-call-to-azure-devops-from-pipeline/*
variables:
- name: 'devopsAccount' # new variable defined in YAML
value: 'thecodemanual'
- name: 'projectName' # new variable defined in YAML
value: 'DevOps Manual'
steps:
- bash: ls $(Build.SourcesDirectory)
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
# Encode the Personal Access Token (PAT)
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$(System.AccessToken)")) }
# Get a list of releases
$uri = "https://dev.azure.com/$(devopsAccount)/$(projectName)/_apis/build/builds/$(Build.BuildId)/logs/6?api-version=5.1"
Write-Host $uri
# Invoke the REST call
$result = Invoke-RestMethod -Uri $uri -Method Get -Headers $AzureDevOpsAuthenicationHeader
Write-Host $result
Write-Host "##vso[task.setvariable variable=high]$result"
То, что вы должны установить sh, - это идентификатор журнала. Обратите внимание, что я использовал 6
для моего 1
шага. Это связано с тем, что в начале некоторые шаги для system-pre-steps.yml
выполняются как загрузка исходного кода et c. Для этого примера я распечатал результат. Пожалуйста, посмотрите на это: