在Azure Pipelines中,您可以set pipeline variables at queue time。您可以使用与管道本身定义的变量相同的方式使用此类变量。
示例:
# pipeline.yml
steps:
- checkout: none
- template: steps/some.yml
parameters:
name: $(queueTimeVar)
# steps/some.yml
parameters:
name: 'World'
steps:
- bash: |
echo "Hello ${{ parameters.name }}!"
但是,如果未显式设置变量,则管道会将此表达式评估为字符串本身。步骤模板将用name: '$(queueTimeVar)'
调用并打印Hello $(queueTimeVar)!
。
如果未设置变量,如何设置默认值?
我尝试将默认值添加为变量,但未按预期工作。
variables:
queueTimeVar: MyDefault
此后,队列时间变量无效。该变量始终是YAML值。
作为解决方法,我必须向使用该值的每个任务添加默认处理。
# bash task
value="MyDefault"
if [ -n "$QUEUETIMEVAR" ]; then
value="$QUEUETIMEVAR"
fi
答案 0 :(得分:2)
如果未设置变量,如何设置默认值?
如果您的意思是不在任何地方设置此变量queueTimeVar
,包括在触发器页面的“变量”选项卡或YAML配置页面的“变量”选项卡中。不幸的是,不,没有显式设置变量,服务器不知道从哪里获取该值。
直到现在,如果您使用的管道配置类型为YAML,则服务器只能识别在三个位置定义的变量:(1) YAML脚本中的变量块,( 2)配置面板中的“变量”面板,在“触发器”设置中为(3)变量选项卡。
服务器无法识别在这三个位置之一中未定义的任何变量,即使仅在以下位置创建一个新变量:
总之,如果您只是在队列时间内创建一个新变量,而没有首先在该三个位置定义它,那么服务器仍然无法识别该变量及其值。
因此,您必须在我前面提到的位置之一中设置变量。否则管道将无法得到它。