我正在构建一个通用模板,以按照我的管道需要的方式格式化变量。
format_vars.yml:
parameters:
- name: var
type: string
variables:
var_formatted: ${{ lower(parameters.var) }}
使用字符串作为参数测试管道:
variables:
- template: format_vars.yml
parameters:
var: AAA
jobs:
- job: teste
steps:
- script: |
echo $(var_formatted)
此管道会回响 aaa。
使用变量作为参数测试管道:
variables:
- name: var1
value: AAA
- template: format_vars.yml
parameters:
var: $(var1)
jobs:
- job: teste
steps:
- script: |
echo $(var_formatted)
此管道与 AAA 相呼应。
这是预期的行为吗?我想无论客户端如何决定传递参数,模板都应该具有相同的结果。
模板表达式
${{ ... }}
在 编译 时评估。
考虑这个模板:
parameters:
- name: var
type: string
variables:
- name: var_formatted
value: ${{ lower(parameters.var) }}
当参数值为
AAA
(硬编码值)时,变量var_formatted
将被设置为aaa
:
variables:
- name: var1
value: AAA
- name: var_formatted
value: aaa
但是如果参数值为
$(var1)
或 $(VAR1)
,那么变量 var_formatted
将被设置为 $(var1)
- 宏语法变量 $(var)
在管道编译之后和任务在运行时执行之前进行处理.
variables:
variables:
- name: var1
value: AAA
- name: var_formatted
value: $(var1)
运行管道时,变量$(var_formatted)
将被递归扩展并打印
AAA
。