Расширение для Azure Devops и вывод

Я разработчик частного настраиваемого расширения, которое можно использовать в Azure Devops.

У меня есть проблема с выводом task.json в нашем расширении, и мне интересно, можете ли вы помочь прояснить / решить проблему.

1-Что работает.

Я создал выпуск с двумя шагами: первый шаг, выполнение моего расширения Второй шаг, получение выходной переменной (извините за название задачи, я нахожусь в режиме тестирования)  введите описание изображения здесь

Наш task.json выполняет скрипт с именем vm.ps1

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

В этом скрипте vm.ps1 у меня есть фрагмент кода для установки значения переменной $ VirtualMachineId:

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

Это значение затем извлекается на втором этапе выпуска, встроенном скрипте Azure PowerShell:

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

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

Моя ценность восстановлена, цель достигнута.

2-Что не работает: реализовать в task.json

Теперь, если я хочу полностью реализовать эту переменную в продукте, мне нужно добавить ее в раздел вывода нашего task.json:

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

Таким образом, пользовательский интерфейс нашего интерфейса будет отображаться в разделе вывода, как в примере ниже (не беспокойтесь, если вы не видите VirtualMachineId на изображении ниже, это изображение-иллюстрация):  введите описание изображения здесь </ a >

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

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

Затем выполняется встроенный скрипт Azure со значением пусто: введите описание изображения здесь

Чтобы возобновить: если я объявлю переменную в разделе вывода задачи json, я не смогу получить значение или значение будет пустым. Кто-нибудь здесь имеет представление о том, что я делаю не так?

Спасибо, что нашли время, чтобы прочитать меня.

См. также:  GIT push в Azure DevOps работает из командной строки, но не из VS2017
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. BBM

    Вот пример того, как передавать переменные между задачами (в adhoc scripting):

    1. Задача первая (установить новую переменную):
    steps:
    - powershell: 'Write-Host "##vso[task.setvariable variable=testvar;]testvalue"'
      displayName: 'set_variable'
    
    1. Задача вторая (получить переменную из области видимости):
    steps:
    - powershell: 'Write-Host $(testvar)'
      displayName: 'print_variable'
    

    Таким образом, ваша переменная доступна во всех задачах при выполнении одного и того же задания.

    Выходные переменные предназначены для передачи значения между задачами. Если вам нужно передать переменную между jobs, просто используйте dependencies с output variables.

    Здесь я сделал образец этапа, который:

    • содержит 2 вакансии A & B
    • создает выходную переменную с именем testvar
    • передает выходную переменную между этапами с использованием зависимостей
    • отображает переменную
    trigger:
    - master
    
    jobs:
    - job: A
      steps:
      - powershell: 'Write-Host "##vso[task.setvariable variable=testvar;isOutput=true;]testvalue"'
        displayName: 'set_variable'  
        name: "Setter"
    - job: B
      dependsOn: A
      variables:
        # map the output variable from A into this job
        varFromA: $[ dependencies.A.outputs['Setter.testvar'] ]
      steps:
      - script: echo $(varFromA)
    

    Если это не решит проблему … Это означает, что я не понимаю ваш вариант использования. Не могли бы вы рассказать подробнее?

    Здесь вы можете увидеть полезную документацию.

    GitHub Notes Microsoft Notes

    Спасибо, что нашли время дать свой отзыв. Я могу установить переменную output и отображать их. Проблема в том, что я устанавливаю их как выходные данные в task.json моего расширения, после чего они пусты :( Другими словами, и если я правильно вас понял, вы воспроизвели часть моего вопроса Что работает :) person BBM; 24.04.2020

  2. BBM

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

    Например: задача Загрузить защищенный файл имеет выходную переменную (secureFilePath). Для того, чтобы следующая задача сослаться на его выходную переменную. Необходимо указать ссылочное имя (например, myFile).

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

    Тогда в следующих задачах. Вы можете обратиться к выходной переменной (secureFilePath) с помощью $(myFile.secureFilePath)

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

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

    Здравствуйте, спасибо за вашу помощь. Один из моих коллег указал мне на это направление. Вы правильно ответили на мой вопрос. person BBM; 28.04.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: