如何使用条件中作业之间传递的变量?
How can I use variables passed between jobs in a condition?
我正在 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 的方法。
你们有没有遇到过类似的问题?我如何定义它才能使其发挥作用?
非常感谢!
拉法尔
尝试使用 condition
作为 step
:
steps:
- pwsh: |
Write-Output "Conditionally run"
condition: eq(variables['varFromJob'], 'testVar')
${{ if eq... }}
是编译 YAML 文件时计算的 compile-time 表达式。
我正在 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 的方法。
你们有没有遇到过类似的问题?我如何定义它才能使其发挥作用?
非常感谢! 拉法尔
尝试使用 condition
作为 step
:
steps:
- pwsh: |
Write-Output "Conditionally run"
condition: eq(variables['varFromJob'], 'testVar')
${{ if eq... }}
是编译 YAML 文件时计算的 compile-time 表达式。