【发布时间】:2021-08-24 08:00:55
【问题描述】:
我想将表达式作为参数的默认值,但我得到“在此上下文中不允许使用模板表达式” 由于模板不能有变量,除非它们只有变量(另一件事我没有得到......),我正在寻找其他替代方案。有人知道吗?
我正在尝试的是:
parameters:
- name: paramOne
default: ${{ lower(replace('$(System.TeamProject)',' ','')) }}
type: string
编辑
这是一个完整的例子。这是 azure-pipelines.yml
trigger:
- main
pool:
vmImage: windows-2019
steps:
- template: test-template.yml
这是 test-template.yml:
parameters:
- name: paramOne
default: ${{ lower(replace(variables['System.TeamProject'],' ','')) }}
type: string
steps:
- task: PowerShell@2
displayName: "Run PowerShell script"
inputs:
targetType: 'inline'
script: Write-Host "${{parameters.paramOne}}"
这会导致错误: "此上下文中不允许使用模板表达式"
变量不能添加到 test-template.yml,如下所示: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops#variable-reuse "如果您使用模板在管道中包含变量,则包含的模板只能用于定义变量"
【问题讨论】:
-
你试过用
${{ lower(replace(variables['System.TeamProject'],' ','')) }}吗? -
是的,结果相同。问题不在于变量,而是在默认值中使用表达式。
-
文档中有一种“有条件地分配变量”的方法:docs.microsoft.com/en-us/azure/devops/pipelines/process/…
标签: azure-devops yaml azure-pipelines