Azure devops 队列时间变量设置不会覆盖默认表达式
我正在尝试创建一个新的构建管道,它将为发布分支和主分支运行几乎相同的步骤。我还希望允许使用队列时间变量覆盖管道的构建样式(发布与主分支) 以下是定义的变量: 当我在队列时间设置变量时,会计算值: 并找到队列时间变量: 但当我用这个来访问值时: 该值为false: 我是做错了什么,还是期望队列时间变量的功能与设计的不同?我认为它们超越了管道中定义的原始值 我认为它们超越了管道中定义的原始值 是的,原始变量值在队列时被覆盖 根据您显示的img,Azure devops 队列时间变量设置不会覆盖默认表达式,azure-devops,build-pipeline,Azure Devops,Build Pipeline,我正在尝试创建一个新的构建管道,它将为发布分支和主分支运行几乎相同的步骤。我还希望允许使用队列时间变量覆盖管道的构建样式(发布与主分支) 以下是定义的变量: 当我在队列时间设置变量时,会计算值: 并找到队列时间变量: 但当我用这个来访问值时: 该值为false: 我是做错了什么,还是期望队列时间变量的功能与设计的不同?我认为它们超越了管道中定义的原始值 我认为它们超越了管道中定义的原始值 是的,原始变量值在队列时被覆盖 根据您显示的img,IsProductionRelease被计算为
IsProductionRelease
被计算为“False”,这也会在您的powershell脚本中生成,这意味着您的队列时间变量工作正常,唯一不同的部分是在第三个img中,它会因某种原因更改为“true”
我制作了一个演示,您可以参考:
SourceBranch
设置为master
分支:
变量IsProductionRelease
:
在第一次测试中,变量值没有改变:
Variables:
IsProductionRelease:
Parsing expression: <startsWith(variables['Build.SourceBranch'],'refs/heads/release')>
Evaluating: startsWith(variables['Build.SourceBranch'], 'refs/heads/release')
Expanded: startsWith('refs/heads/master', 'refs/heads/release')
Result: 'False'
在第二个测试中,将IsProductionRelease
值更改为$[startsWith(变量['Build.SourceBranch'],'refs/heads/master')]
:
计算结果:
Variables:
IsProductionRelease:
Parsing expression: <startsWith(variables['Build.SourceBranch'],'refs/heads/master')>
Evaluating: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
Expanded: startsWith('refs/heads/master', 'refs/heads/master')
Result: 'True'
变量:
iProductionRelease:
解析表达式:
评估:startsWith(变量['Build.SourceBranch'],'refs/heads/master')
扩展:开始使用('refs/heads/master','refs/heads/master')
结果:“正确”
而powershell返回“True”
Is production Release=True
请再次检查您的整个过程。谢谢您的帮助回复。为什么我不能只将队列时间值设置为true而不需要表达式?现在我了解了如何生成第三个img,您可以在队列时间将表达式更改为特定的文本值“true”。我也对它进行了测试,并重现了这个问题。似乎在
作业准备参数
部分中,变量被设置为表达式计算值,不能被文本值覆盖。我建议您应该退出表达式,如果您想在不进行表达式计算的情况下直接更改值,请在IsProductionRelease
中设置一个'false'/'true'文本值。感谢您的跟进,我可能会提交一份错误报告。好主意,您可能会更好地理解它,即使它可能不被接受为错误。顺致敬意,
Variables:
IsProductionRelease:
Parsing expression: <startsWith(variables['Build.SourceBranch'],'refs/heads/master')>
Evaluating: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
Expanded: startsWith('refs/heads/master', 'refs/heads/master')
Result: 'True'