我正在寻找在Azure DevOps .yaml文件中设置动态需求名称的方法。
现在,我们有一些由Azure DevOps服务随机选择的自托管构建代理,但是有时我们需要选择一个代理来研究为什么它不能工作(或者其他罕见的事件)。一种方法是关闭所有其他代理,并对此进行操作(它影响我们的整个CI/CD)。第二种方法是添加临时管道并将所需代理移动到下一个代理池(这需要花费时间)。
我认为最好的解决方案是动态设定需求的可能性。例如,我可以在变量组中使用以下内容:
"DemandName“= "IsBuildAgent”
"DemandValue“=”是“
每个代理都有这个环境变量集ant,它总是允许每个代理运行管道,但是如果我在运行管道之前设置在变量下面。
"DemandName“= "AgentNumber”
"DemandValue“= "BuildAgentNr6”

它将覆盖库变量,并且只有一个代理能够运行此管道。
pool:
name: MyBuildAgents
demands: $(DemandName) -equals $(DemandValue)DemandValue得到了正确的评估,但DemandName现在无法设置。是否有可能以略有改变的方式实现?也许我应该改变语法?或者我应该把它作为新功能来考虑?
发布于 2020-03-05 18:25:55
是否有可能以稍微改变的方式实现?也许我应该改变语法?或者我应该把它作为新功能来考虑?
你的语法是正确的。
恐怕没有这样的开箱即用或略有改变的方式来实现它。
就像测试一样,DemandName不能正确设置。这是因为根据语法规则,方程的左侧被视为字符串,而不是值。这将导致Azure将demand name查找为字符串$(DemandName),而不是,即$(DemandName)的值,然后根据该值查找需求名称。
希望这能有所帮助。
发布于 2021-10-11 11:14:58
你能用这个表达式吗?但是,它需要为每个可能的需求设置一个代码块。
pool:
name: MyBuildAgents
${{ if eq(variables['DemandName'],AgentNumber)}}:
demands: AgentNumber -equals $(DemandValue)https://stackoverflow.com/questions/60526369
复制相似问题