【问题标题】:How can I use variables passed between jobs in a condition?如何在条件下使用作业之间传递的变量?
【发布时间】:2020-12-08 03:53:42
【问题描述】:

我正在 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"

我可以在作业 useVars 的步骤中打印$(varFromJob) 变量。但我无法在这个 if (condition) 示例中使用它。

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

你们有没有遇到过类似的问题?我如何定义它以使其工作?

非常感谢! 拉法尔

【问题讨论】:

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


    【解决方案1】:

    尝试将condition 用于step

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

    ${{ if eq... }} 是一个编译时表达式,在编译 YAML 文件时进行评估。

    【讨论】:

      猜你喜欢
      • 2022-08-16
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      相关资源
      最近更新 更多