如何使用条件中的作业之间传递的变量?

时间:2020-08-18 22:29:44

标签: variables azure-devops yaml azure-devops-pipelines

我正在Azure Azure中构建YAML管道。我在第一份工作中生成了几个变量,我将这些变量传递给其他工作,并希望使用它们有条件地运行一些步骤。

代码如下:

     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"

在工作useVars中,我可以逐步打印$(varFromJob)变量。但是我无法在此if(条件)示例中使用它。

我正在尝试使用不同的方法,例如variables.varFromJob和其他从https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml获取的方法。

你们是否一直在努力解决类似的问题?我如何定义它才能使其正常工作?

非常感谢! 拉法尔

1 个答案:

答案 0 :(得分:0)

尝试为condition使用step

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

${{ if eq... }}编译时表达式,在编译YAML文件时会对其进行评估。