Azure devops Azure管道:为什么我的变量不使用;关键词:价值;语法,但不使用“设置”;“名称、值”;语法?
我试图更改定义变量的语法,但变量不再被设置。我想如果我也在使用变量组或模板,而我没有,我只需要使用“name,value”语法,所以我想使用“key:value”语法,因为它更具可读性 但是,当我切换到可读性更强的语法时,没有设置Azure devops Azure管道:为什么我的变量不使用;关键词:价值;语法,但不使用“设置”;“名称、值”;语法?,azure-devops,yaml,azure-pipelines,azure-pipelines-yaml,Azure Devops,Yaml,Azure Pipelines,Azure Pipelines Yaml,我试图更改定义变量的语法,但变量不再被设置。我想如果我也在使用变量组或模板,而我没有,我只需要使用“name,value”语法,所以我想使用“key:value”语法,因为它更具可读性 但是,当我切换到可读性更强的语法时,没有设置Private.RevisionVersion、pythonPackageVersion和nugetPackageVersion变量(如第一个代码段的输出所示) “键:值”语法(不起作用): 变量: Private.majorminorvision:1.2 isFina
Private.RevisionVersion
、pythonPackageVersion
和nugetPackageVersion
变量(如第一个代码段的输出所示)
“键:值”语法(不起作用):
变量:
Private.majorminorvision:1.2
isFinalRelease:错误
以色列候选人:错
伊莎尔法:是的
${{如果eq(变量['isFinalRelease'],'true')}:
Private.RevisionVersion:$[计数器(变量['Private.majorminorvision'],0)]
pythonPackageVersion:$[格式('{0}.{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
nugetPackageVersion:$[格式('{0}.{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
${{如果eq(变量['isReleaseCandidate'],'true')}:
Private.RevisionVersion:$[计数器(格式({0}rc',变量['Private.majorminorvision']),1]
pythonPackageVersion:$[格式('{0}rc{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
nugetPackageVersion:$[格式('{0}.{1}-rc',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
${{if eq(变量['isAlpha'],'true')}:
Private.RevisionVersion:$[计数器(格式({0}a',变量['Private.majorminorvision']),1]
pythonPackageVersion:$[格式({0}a{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
nugetPackageVersion:$[格式('{0}.{1}-a',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
工作:
-作业:Echo_变量
步骤:
-脚本:echo$(Private.majorminorvision)$(isFinalRelease)$(isReleaseCandidate)$(isAlpha)
-脚本:echo$(Private.RevisionVersion)$(pythonPackageVersion)$(nugetPackageVersion)
产出:
echo 1.2 False False True
echo 1 1.2a1 1.2.1-a
echo 1.2假-假-真
echo$(Private.RevisionVersion)$(pythonPackageVersion)$(nugetPackageVersion)
未设置Private.RevisionVersion
、pythonPackageVersion
和nugetPackageVersion
变量
“名称、值”语法(工作):
变量:
-名称:Private.majorminorvision
价值:1.2
-名称:isFinalRelease
值:false
-姓名:以色列
值:false
-姓名:伊莎尔法
值:true
-名称:Private.RevisionVersion
${{如果eq(变量['isFinalRelease'],'true')}:
值:$[计数器(变量['Private.majorminorvision'],0)]
${{如果eq(变量['isReleaseCandidate'],'true')}:
值:$[计数器(格式({0}rc',变量['Private.majorminorvision']),1]
${{if eq(变量['isAlpha'],'true')}:
值:$[计数器(格式({0}a',变量['Private.majorminorvision']),1]
-名称:pythonPackageVersion
${{如果eq(变量['isFinalRelease'],'true')}:
值:$[格式('{0}.{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
${{如果eq(变量['isReleaseCandidate'],'true')}:
值:$[格式('{0}rc{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
${{if eq(变量['isAlpha'],'true')}:
值:$[格式('{0}a{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
-名称:nugetPackageVersion
${{如果eq(变量['isFinalRelease'],'true')}:
值:$[格式('{0}.{1}',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
${{如果eq(变量['isReleaseCandidate'],'true')}:
值:$[格式('{0}.{1}-rc',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
${{if eq(变量['isAlpha'],'true')}:
值:$[格式('{0}.{1}-a',变量['Private.majorminorvision'],变量['Private.RevisionVersion'])]
工作:
-作业:Echo_变量
步骤:
-脚本:echo$(Private.majorminorvision)$(isFinalRelease)$(isReleaseCandidate)$(isAlpha)
-脚本:echo$(Private.RevisionVersion)$(pythonPackageVersion)$(nugetPackageVersion)
产出:
echo 1.2 False False True
echo 1 1.2a1 1.2.1-a
echo 1.2假-假-真
回声1 1.2a1 1.2.1-a
据我所知,它们在语义上是相同的。我遗漏了什么?我认为这是失败的,因为
isAlpha
的布尔值为True
,您正在将其与字符串'True'
进行比较。尝试将此表达式用于isAlpha
:
${if variables['isAlpha']}
值:。。。
或
${if eq(变量['isAlpha'],true)}
值:。。。
如果我们按以下方式切换条件:
variables:
Private.MajorMinorVersion: 1.2
isFinalRelease: false
isReleaseCandidate: false
isAlpha: true
${{ if eq(variables['isFinalRelease'], 'true') }}:
Private.RevisionVersion: $[counter(variables['Private.MajorMinorVersion'], 0)]
pythonPackageVersion: $[format('{0}.{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
nugetPackageVersion: $[format('{0}.{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
${{ if eq(variables['isAlpha'], 'true') }}:
Private.RevisionVersion: $[counter(format('{0}a', variables['Private.MajorMinorVersion']), 1)]
pythonPackageVersion: $[format('{0}a{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
nugetPackageVersion: $[format('{0}.{1}-a', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
${{ if eq(variables['isReleaseCandidate'], 'true') }}:
Private.RevisionVersion: $[counter(format('{0}rc', variables['Private.MajorMinorVersion']), 1)]
pythonPackageVersion: $[format('{0}rc{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
nugetPackageVersion: $[format('{0}.{1}-rc', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
jobs:
- job: Echo_Variables
steps:
- script: echo $(Private.MajorMinorVersion) $(isFinalRelease) $(isReleaseCandidate) $(isAlpha)
- script: echo $(Private.RevisionVersion) $(pythonPackageVersion) $(nugetPackageVersion)
产出:
echo 1.2 False False True
echo 1 1.2a1 1.2.1-a
根据测试结果,它似乎不会运行最新的条件,它只会运行前两个条件
我已经向开发人员社区报告了这个问题,您可以根据此获得最新消息,如果有任何更新,我将在这里更新。AFAIK,变量总是字符串(只有参数有类型)。第一个选项使模板无效,错误为“Private.RevisionVersion”已经定义,等等。第二个选项仍然没有设置变量(可能是因为变量的
true
和true'
是相同的)。