我想使用 Azure 构建管道中表达式中的predefined variable的值。
它遵循 YML 定义:
trigger:
- none
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo ${{ format('{0}-vars', variables['Build.Repository.Name']) }} # outcome: -vars
- script: echo ${{ format('{0}-vars', 'a_string') }} # outcome: a_string-vars
我仍然不是这种环境的专家,但是我很清楚variables['Build.Repository.Name']
尚未解决。在使用$(Build.Repository.Name)
的表达式之外完全有效。
在表达式中引用预定义变量的正确方法是什么? (我无法在文档中找到它。)
任何帮助都非常感谢!
答案 0 :(得分:1)
请查看this article,以便您可以获得有关可用变量和表达式语法的更多信息。但是,总而言之,就在表达式中使用变量而言,您有两种方式:
答案 1 :(得分:0)
按照documentation进行操作的正确方法是使用
repository: $(Build.Repository.Name)
但是,只要有条件检查,就可以使用
condition: and(succeeded(), eq(variables['Build.Repository.Name'], 'Sample'))
答案 2 :(得分:0)
我可能会混淆Azure DevOps中使用的“模板”的两种不同含义,但是我认为问题在于您用于表达式的语法。当您执行以下操作时:
${{ format('{0}-vars', variables['Build.Repository.Name']) }}
您使用的是template expression syntax(即${{variable}}
语法)。
很好,但是我认为“可用于模板吗?” this table中的列是您的问题。对于Build.Repository.Name
变量,它表示“否”。
再次,我可能会弄错,但是我认为这意味着该变量-无论出于何种原因-都不能与该表达式语法一起使用。
我认为,如果您使用runtime expression syntax,则会获得想要的行为。
即这个:
$[format('{0}-vars', variables['Build.Repository.Name'])]
这一直在我正在研究的管道中为我工作。
但是要小心,似乎有一个bug,如果您使用property dereference syntax(即variables.Build.Repository.Name
),您将得到与当前问题相同的症状。这件事也在我身上发生。