Azure Вывод переменной DevOps в другое задание приводит к пустому значению - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь повторно использовать вывод переменной одного задания в другом (оба на одном этапе), как описано в документации , но не могу заставить его работать. Это же решение задокументировано в этот вопрос .

Я использую сценарий PowerShell, который выводит переменную -

Write-Output "##vso[task.setvariable variable=WEBSITE_CONTENTSHARE;isOutput=true]some-value-dh8e"

И затем я устанавливаю переменная в следующем задании вот так. Обратите внимание, что Output_Required_App_Settings - это имя и задания, и задачи, которая выводит переменную WEBSITE_CONTENTSHARE -

- deployment: Deploy_ARM_Template
  displayName: Deploy ARM Template
  dependsOn:
  - Output_Required_App_Settings
  variables:
  - name: parameters.functionAppSettings.value.WEBSITE_CONTENTSHARE
    value: $[dependencies.Output_Required_App_Settings.outputs['Output_Required_App_Settings.WEBSITE_CONTENTSHARE']]
  vmImage: ubuntu-latest

Однако значение parameters.functionAppSettings.value.WEBSITE_CONTENTSHARE пусто, когда я его использую, что означает, что мое развертывание не удается.

На всякий случай, причина такого длинного имени в том, что я использую замену пути JSON в этом задании, чтобы вставить значение WEBSITE_CONTENTSHARE в файл параметров шаблона ARM.

Как я могу поделиться переменной между заданиями?

1 Ответ

0 голосов
/ 05 августа 2020

Я провел тест с вашим кодом и успешно вывел переменную.

Вот мой полный файл YAML:

trigger: none

pool:
  vmImage: 'ubuntu-latest'

jobs:
- job: Output_Required_App_Settings
  steps:
  - task: PowerShell@2
    name: Output_Required_App_Settings
    inputs:
      targetType: 'inline'
      script: |
        Write-Output "##vso[task.setvariable variable=WEBSITE_CONTENTSHARE;isOutput=true]some-value-dh8e"
- deployment: Deploy_ARM_Template
  displayName: Deploy ARM Template
  dependsOn:
  - Output_Required_App_Settings
  variables:
  - name: parameters.functionAppSettings.value.WEBSITE_CONTENTSHARE
    value: $[dependencies.Output_Required_App_Settings.outputs['Output_Required_App_Settings.WEBSITE_CONTENTSHARE']]
  environment: ubuntu-latest
  strategy:
    runOnce:
      deploy:
        steps:
        - script: echo $(parameters.functionAppSettings.value.WEBSITE_CONTENTSHARE)

И вот результат выполнения задачи CmdLine:

enter image description here

The strange behavior that your output value was empty could result from following factors.

  1. If you are using Json format variable, you need to convert it into one line first. You can refer to this question. Как передать переменную Json в задачу командной строки в Azure конвейере DevOps?

  2. Задания и задачи поддерживают ' name 'и' displayName ', убедитесь, что вы используете' name: Output_Required_App_Settings 'вместо' diaplayName: Output_Required_App_Settings '

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