我正在尝试创建一个新的构建管道,它将为发布分支和主分支运行几乎相同的步骤。我还希望允许使用队列时间变量覆盖管道的构建样式(发布与主分支)。
这是定义的变量:
当我在排队时设置变量时,计算值:
并找到排队时间变量:
但是当我去访问这个值时:
值为假:
我是否做错了什么或期望排队时间变量的功能与其设计的不同?我认为它们会覆盖管道中定义的原始值。
我正在尝试创建一个新的构建管道,它将为发布分支和主分支运行几乎相同的步骤。我还希望允许使用队列时间变量覆盖管道的构建样式(发布与主分支)。
这是定义的变量:
当我在排队时设置变量时,计算值:
并找到排队时间变量:
但是当我去访问这个值时:
值为假:
我是否做错了什么或期望排队时间变量的功能与其设计的不同?我认为它们会覆盖管道中定义的原始值。
我认为它们会覆盖管道中定义的原始值。
是的,原始变量值在排队时被覆盖。
根据您展示的 imgs,IsProductionRelease
计算为“False”,这也是在您的 powershell 脚本中生成的,这意味着您的队列时间变量工作正常,唯一不同的部分是在您的第三个 img 中它更改为“true”某些原因。
我建了一个demo你可以参考:
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 返回“真”
Is Producetion Release = True
请再次检查您的整个过程。