gpt4 book ai didi

azure-devops - 提供具有默认值的管道队列时间变量

转载 作者:行者123 更新时间:2023-12-01 11:12:27 24 4
gpt4 key购买 nike

在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

最佳答案

How could I set a default value if the variable wasn't set?



如果您的意思是不要在任何地方设置此变量 queueTimeVar,包括在触发器页面的“变量”选项卡或YAML配置页面的“变量”选项卡中。不幸的是,不,如果没有显式设置变量,服务器将不知道应从何处获取该值。

到目前为止,如果您正在使用的管道配置类型为YAML,则服务器只能识别在三个位置定义的变量: (1) YAML脚本中的变量块, (2)配置面板中的“变量”面板, (3)触发器设置中的变量选项卡。

enter image description here

服务器无法识别在这三个位置之一中未定义的任何变量,即使仅在以下位置中创建一个新变量:

enter image description here

简而言之,如果您只是在队列时间内创建了一个新变量,而没有首先在该三个位置定义它,则服务器仍然无法识别该变量及其值。

因此,您必须在我前面提到的位置之一中设置变量。否则管道将无法得到它。

关于azure-devops - 提供具有默认值的管道队列时间变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58431947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com