ssc*_*eck 5 azure-devops azure-pipelines
在 Azure Pipelines 中,您可以在排队时设置管道变量。您可以像使用管道本身定义的变量一样使用此类变量。
例子:
# pipeline.yml
steps:
- checkout: none
- template: steps/some.yml
parameters:
name: $(queueTimeVar)
# steps/some.yml
parameters:
name: 'World'
steps:
- bash: |
echo "Hello ${{ parameters.name }}!"
Run Code Online (Sandbox Code Playgroud)
但是,如果未明确设置该变量,则管道会将此表达式评估为字符串本身。步骤模板将使用name: '$(queueTimeVar)'和 print调用Hello $(queueTimeVar)!。
如果未设置变量,如何设置默认值?
我尝试将默认值添加为变量,但没有按预期工作。
variables:
queueTimeVar: MyDefault
Run Code Online (Sandbox Code Playgroud)
之后,排队时间变量没有影响。变量始终是 YAML 值。
作为解决方法,我必须为每个使用该值的任务添加默认处理。
# bash task
value="MyDefault"
if [ -n "$QUEUETIMEVAR" ]; then
value="$QUEUETIMEVAR"
fi
Run Code Online (Sandbox Code Playgroud)
如果未设置变量,如何设置默认值?
如果你的意思是没有queueTimeVar在任何地方设置这个变量,包括在触发器页面的变量选项卡中,或者在 YAML 配置页面的变量选项卡中。不幸的是,不,如果没有明确设置变量,服务器无法知道应该从哪里获取值。
到目前为止,如果您使用的管道配置类型是 YAML,服务器只能识别在三个地方定义的变量:(1) YAML 脚本中的变量块,(2)配置页面中的变量面板,(3)变量触发器设置中的选项卡。
服务器无法识别未在这三个位置之一中定义的任何变量,即使只是在以下位置创建一个新变量:
一句话,如果你只是在排队时创建了一个新的变量,而没有先在这三个位置定义它,服务器仍然无法识别该变量及其值。
因此,您必须在我之前提到的位置之一中设置变量。或者管道不会得到它。
| 归档时间: |
|
| 查看次数: |
3503 次 |
| 最近记录: |