Azure DevOps Pipeline 变量格式用法

问题描述 投票:0回答:1

我对 Azure DevOps 管道中的变量有疑问。我无法在 if 语句中有效地使用它们或作为值参数中的占位符。

这是一个相关问题,但答案对我不起作用。

我在顶级管道 .yml 文件中定义了一个这样的变量。

variables: - name: artifact_source readonly: true value: 'ecu' - name: artifact_getter readonly: true value: 'get_artifacts_ecu.yaml'
在较低级别的模板文件中,我想像这样使用它们:

# Get binaries - template: $(artifact_getter) parameters: variant: ${{ parameters.variant }}
给我这个错误:在存储库中找不到文件/.azuredevops/template/$(artifact_getter)。

jobs: - job: ${{ parameters.variant }} pool: ${{ parameters.pool }} steps: # Clean checkout - checkout: self clean: true # Get binaries - ${{ if eq( $(artifact_source), 'ecu') }}: - template: get_artifacts_ecu.yml parameters: variant: ${{ parameters.variant }}
这会出现错误:无法识别的值:'$'。位于表达式中的位置 5:eq( $(artifact_source), 'ecu')。如需更多帮助,请参阅 

https://go.microsoft.com/fwlink/?linkid=842996

我想知道应该使用什么格式来获取此处变量的值。我看到不同的形式如何引用变量:

${{ variables.artifact_source }} $[variables.var] $env:artifact_source $(artifact_source) # only one working for variables
也记录在

这里。但我只能让 $(name)

 工作,但在我的情况下不行。

如何使用变量切换到不同的模板?

templates variables azure-devops azure-pipelines
1个回答
0
投票

表达式文档中,它提到作为表达式的一部分,您可以使用两种语法之一访问变量:

    索引语法:
  • variables['MyVar']
    
    
  • 属性取消引用语法:
  • variables.MyVar
    
    
所以,您可以在这里使用

eq(variables['artifact_source'], 'ecu')

eq(variables.artifact_source, 'ecu')

# Get binaries - ${{ if eq(variables['artifact_source'], 'ecu') }}: - template: get_artifacts_ecu.yml parameters: variant: ${{ parameters.variant }}

# Get binaries - ${{ if eq(variables.artifact_source, 'ecu') }}: - template: get_artifacts_ecu.yml parameters: variant: ${{ parameters.variant }}
    
© www.soinside.com 2019 - 2024. All rights reserved.