azure-devops - Azure Pipelines:为什么我的变量不使用“键:值”语法设置,而是使用“名称,值”语法设置?
问题描述
我试图更改定义变量的语法,但不再设置变量。我认为如果我还使用变量组或模板,我只需要使用“名称,值”语法而我没有,所以我想使用“键:值”语法,因为它更具可读性。
但是,当我切换到更易读的语法时Private.RevisionVersion
,并没有设置pythonPackageVersion
、 和nugetPackageVersion
变量(如第一个代码片段的输出所示)。
“键:值”语法(不工作):
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['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'])]
${{ 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'])]
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 $(Private.RevisionVersion) $(pythonPackageVersion) $(nugetPackageVersion)
、Private.RevisionVersion
和变量未设置pythonPackageVersion
。nugetPackageVersion
“名称,值”语法(工作):
variables:
- name: Private.MajorMinorVersion
value: 1.2
- name: isFinalRelease
value: false
- name: isReleaseCandidate
value: false
- name: isAlpha
value: true
- name: Private.RevisionVersion
${{ if eq(variables['isFinalRelease'], 'true') }}:
value: $[counter(variables['Private.MajorMinorVersion'], 0)]
${{ if eq(variables['isReleaseCandidate'], 'true') }}:
value: $[counter(format('{0}rc', variables['Private.MajorMinorVersion']), 1)]
${{ if eq(variables['isAlpha'], 'true') }}:
value: $[counter(format('{0}a', variables['Private.MajorMinorVersion']), 1)]
- name: pythonPackageVersion
${{ if eq(variables['isFinalRelease'], 'true') }}:
value: $[format('{0}.{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
${{ if eq(variables['isReleaseCandidate'], 'true') }}:
value: $[format('{0}rc{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
${{ if eq(variables['isAlpha'], 'true') }}:
value: $[format('{0}a{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
- name: nugetPackageVersion
${{ if eq(variables['isFinalRelease'], 'true') }}:
value: $[format('{0}.{1}', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
${{ if eq(variables['isReleaseCandidate'], 'true') }}:
value: $[format('{0}.{1}-rc', variables['Private.MajorMinorVersion'], variables['Private.RevisionVersion'])]
${{ if eq(variables['isAlpha'], 'true') }}:
value: $[format('{0}.{1}-a', 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
据我所知,这些在语义上是相同的。我错过了什么?
解决方案
如果我们切换条件如下:
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
根据测试结果,它似乎不会运行最新的条件,它只会运行前两个条件。
我已向开发者社区报告此问题,您可以关注此票以获取最新消息,如果有任何更新,我会在这里更新。
推荐阅读
- php - 动态添加的行中的可搜索下拉值
- angular - Filterpredicate 与 json 数组过滤器
- excel - 上一张表中的暗淡范围 - 运行时错误 1004
- kubernetes - Presto 313 密码验证器。属性不适用于文件
- swift - Kotlin 相当于 %@ 在 swift
- amazon-web-services - 如何避免在 aws 胶水中使用爬虫
- python-3.x - 我想在录音中显示鼠标指针
- javascript - 如何用 PHP 用纯文本和用户名(或显示名称)替换 span 中的标题
- python - 多产品销售预测
- java - Java:从 Json 文件中删除内容