有没有办法在 Azure Pipelines 条件下使用自定义变量
Is there a way to use custom variables in Azure Pipelines conditions
我正在尝试做这样的事情
variables:
${{ if eq(variables['abc'], 'dev') }}:
someOtherVariable: '123'
这里有一个通过 UI 定义的变量:
没用。 someOtherVariable
在此之后没有定义。
有没有办法在条件下使用这个变量?语法应该是什么?
谢谢
语法正确,但似乎不适用于依赖为自定义变量定义变量的块内变量的条件。
这是 Azure Pipelines YAML 处理管道的(许多)怪癖之一。某些条件、变量、模板、语法仅在 YAML 处理的特定阶段可用,这取决于您是在管道、模板还是装饰器中。
最简单的解决方案是使用脚本步骤来设置变量并选择性地使该步骤成为条件:
${{ if eq(variables['condition'], 'true') }}:
script: echo '##vso[task.setvariable variable=someOtherVariable]123'
或依靠 one of my tasks 代表您这样做:
- task: SetVariable@1
inputs:
name: 'someOtherVariable'
value: '123'
condition: eq(variables['condition'], 'true')
或:
${{ if eq(variables['condition'], 'true') }}:
- task: SetVariable@1
inputs:
name: 'someOtherVariable'
value: '123'
我正在尝试做这样的事情
variables:
${{ if eq(variables['abc'], 'dev') }}:
someOtherVariable: '123'
这里有一个通过 UI 定义的变量:
没用。 someOtherVariable
在此之后没有定义。
有没有办法在条件下使用这个变量?语法应该是什么?
谢谢
语法正确,但似乎不适用于依赖为自定义变量定义变量的块内变量的条件。
这是 Azure Pipelines YAML 处理管道的(许多)怪癖之一。某些条件、变量、模板、语法仅在 YAML 处理的特定阶段可用,这取决于您是在管道、模板还是装饰器中。
最简单的解决方案是使用脚本步骤来设置变量并选择性地使该步骤成为条件:
${{ if eq(variables['condition'], 'true') }}:
script: echo '##vso[task.setvariable variable=someOtherVariable]123'
或依靠 one of my tasks 代表您这样做:
- task: SetVariable@1
inputs:
name: 'someOtherVariable'
value: '123'
condition: eq(variables['condition'], 'true')
或:
${{ if eq(variables['condition'], 'true') }}:
- task: SetVariable@1
inputs:
name: 'someOtherVariable'
value: '123'