Как использовать выходные переменные в заданиях агента в конвейере выпуска Azure - PullRequest
0 голосов
/ 09 июня 2019

В моем конвейере выпуска Azure у меня есть 2 задания агента, одно для развертывания sql с использованием power-shell, а другое для kubernetes с использованием power-shell.Как установить выходную переменную в первом задании агента и использовать его во втором задании агента с помощью power-shell.

enter image description here

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Как использовать выходные переменные для всех заданий агента в конвейере выпуска Azure

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

Существует связанная проблема Переменные, заданные с помощью команд ведения журнала, не сохраняются между агентами s, вы можете продолжить.

Чтобы решить эту проблему, вы можете попробовать выполнить обходной путь :

  • Определите переменную в определении выпуска Переменная.
  • Используйте REST API ( Definitions - Update ), чтобы обновить значение переменной определения выпуска взадание агента 1.
  • Используйте обновленное значение переменной определения выпуска в следующем задании агента.

Подробная информация об использовании REST API для обновления значения определения выпускаПеременная, вы можете следовать приведенному ниже билету:

Как изменить переменную определения выпуска DevOps Azure из задачи выпуска?

Надеюсь, это поможет.

1 голос
/ 09 июня 2019

Используйте

Write-Output "##vso[task.setvariable variable=testvar;isOutput=true;]testvalue"

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

$(taskreference.testvariable)

Имя ссылки на задачу можно задать в разделе вывода задачи сценария powershell:

enter image description here

Но похоже, что перекрестные ссылки еще не доступны, когда я читаю документы:

TODO

Я не уверен, как мы собираемся генерировать имя ссылки на вакансию, поскольку у нас нет цепочки заданий на данный момент.

Это должно быть что-то вроде:

{DefinitionName}_{JobName}

См .: Azure-Pipelines-Agent / docs / Outputvariable.md

Таким образом, на данный момент переменная будет работать только внутри одного и того же задания.

Похоже, сборка YAML уже поддерживает перекрестные ссылки на выходные переменные .

работа:

# 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...