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

Я создаю конвейер YAML в Azure DevOps. Я создаю пару переменных в первом задании, которые передаю другому заданию и хочу использовать их для условного выполнения некоторых шагов.

Вот как выглядит код:

     stages:
      - stage: ConditionalVars
        jobs:
        - job: outputVars
          steps:
            - pwsh: |
                Write-Host "##vso[task.setvariable variable=varExample;isOutput=true]testVar"
              name: setVars
        - job: useVars
          dependsOn: outputVars
          variables:
            varFromJob: $[ dependencies.outputVars.outputs['setVars.varExample']]
          steps:
          - ${{ if eq($(varFromJob), 'testVar')}}:
            - pwsh: |
                Write-Output "Conditionally run"

Я могу печатать $(varFromJob)переменная шага в использовании задания Но я не могу использовать его в этом примере if (condition).

Я пробовал разные подходы, например variables.varFromJobи другие взяты из https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml.

Вы, ребята, боролись с подобной проблемой? Как я могу определить его, чтобы он работал?

Большое спасибо! Рафаль

1 ответ

Решение

Попробуйте использовать condition для step:

steps:
   - pwsh: |
       Write-Output "Conditionally run"
     condition: eq(variables['varFromJob'], 'testVar')

${{ if eq... }}- это выражение времени компиляции, которое вычисляется при компиляции файла YAML.

Другие вопросы по тегам