azure-devops - lower() 函数似乎在 Azure DevOps YAML 管道中不起作用
问题描述
我正在尝试在 YAML 模板中使用 lower() 函数,但不理解该行为。我有一个名为 Infra.Environment.ShortName 的变量组,其值为“Dev”。在我的 YAML 模板中,我从变量组中定义了一个变量:
variables:
- name: environmentShortName
value: $(Infra.Environment.ShortName)
在任务中,我指的是这个变量:
- task: AzureResourceGroupDeployment@2
displayName: 'Deploy Storage Account'
inputs:
azureSubscription: ${{ parameters.subscription }}
resourceGroupName: mst-${{ lower(variables.environmentShortName) }}-infra
location: '$(Infra.Environment.Region.Primary)'
csmFile: '$(Pipeline.Workspace)/$(Build.DefinitionName)/Resources/infra-storageAccount.json'
csmParametersFile: '$(Pipeline.Workspace)/$(Build.DefinitionName)/Resources/infra-storageAccount.parameters.json'
deploymentOutputs: ArmOutputs
我尝试了不同的表达式,但不明白为什么我不能将变量组值转换为小写:
resourceGroupName: mst-${{ lower(variables.environmentShortName) }}-infra
=> mst-Dev-infra(较低的似乎不起作用)
resourceGroupName: ${{ format('mst-{0}-infra', lower(variables.environmentShortName)) }}
=> mst-Dev-infra(格式有效,但较低的无效)
resourceGroupName: $[format('mst-{0}-infra', lower(variables.environmentShortName))]
=> $[format('mst-{0}-infra', lower(variables.environmentShortName))] (未评估表达式)
resourceGroupName: mst-${{ lower(variables['Infra.Environment.ShortName']) }}-infra
=> mst--infra(空值)
resourceGroupName: mst-${{ lower('Dev') }}-infra
=> mst-dev-infra (lower 使用常数值)
解决方案
解决方案是使用运行时变量,因为变量组在编译时未解析。运行时表达式有一些限制,但以下工作:
- name: environmentShortName
value: $[lower(variables['Infra.Environment.ShortName'])]
resourceGroupName: mst-$(environmentShortName)-infra
推荐阅读
- html - 如何在html5的TextBox中自动在4位数字后插入连字符“-”?
- android - Logcat 没有显示 Log.i() 消息
- javascript - 如何使用按钮将 False 更改为 True
- r - 在 R 中使用从 Excel 到 Shiny 的 DDE 链接
- java - onSensorChanged() 中的值不会存储在变量中
- python - Tensorflow 对象检测 API - 运行 model_builder_test.py 模块“tensorflow”时出错,没有属性“contrib”
- c# - 根据条件单击按钮后确认是/否
- android - 将视频上传到 FTP android
- c# - 如何使用自定义表情符号?
- c# - 在 automapper 中创建 IEnumerable 到 IEnumerable /List 的映射