我正在尝试创建一个新的构建管道,该管道将为发布分支和主分支运行几乎相同的步骤。我还想允许使用队列时间变量来覆盖管道的构建样式(发布vs主分支)。
这是定义的变量:
当我在队列时间设置变量时,将计算值:
找到队列时间变量:
但是当我使用以下方法访问值时:
该值为false:
我是在做错事还是期望队列时间变量的功能不同于设计的功能?我以为它们会覆盖管道中定义的原始值。
答案 0 :(得分:0)
我认为它们覆盖了管道中定义的原始值。
是的,原始变量值在队列时间被覆盖。
根据您显示的img,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'
powershell也会返回“ False”值:
Is Producetion Release = False
在第二个测试中,将IsProductionRelease
的值更改为$[startsWith(variables['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'
powershell返回“ True”
Is Producetion Release = True
请再次检查您的整个过程。