1

我正在 Azure DevOps 中构建 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"

我能够$(varFromJob)在作业 useVars 中逐步打印变量。但是我不能在这个 if (condition) 例子中使用它。

我正在尝试不同的方法,例如https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yamlvariables.varFromJob中的其他方法。

你们有没有为类似的问题而苦苦挣扎?我如何定义它以使其工作?

非常感谢!拉法尔

4

1 回答 1

0

尝试使用a conditionstep

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

${{ if eq... }}是在编译YAML 文件时计算的编译时表达式。

于 2020-08-19T14:14:06.453 回答