【问题标题】:Conditional Variable Assignment in Azure Devops Build PipelinesAzure Devops Build Pipelines 中的条件变量分配
【发布时间】:2021-02-10 07:49:03
【问题描述】:

Azure Pipelines 有 ExpressionsConditions,但我找不到任何方法根据条件将参数中的两个值之一分配给变量。

有没有我可以做到这一点?

parameters:
- name: major
  displayName: " Major Version(Default 3)"
  type: string
  default: 3

- name: minor
  displayName: 'Minor Version(Default 15)'
  type: string
  default: 15
  values:
  - 15
  - 16
  - 17
  - 18
  - 19

- name: patch
  displayName: 'Patch Version(Default 0)'
  type: string
  default: 0

- name: checksum
  displayName: 'Pattern is minor version.patch version, checksum'
  type: string
  values:
  - '15.0, 8003fcfe34dc224be816921e9543fa58ba195653' 
  - '18.1, d8e42f7a7b85ad72ba27117d1f13a790228f1369'
  - '19.0, 4e66eeedba4e1f3ea26cadb0c2bfa96264e7c8fb'

variables:
  major: ${{ parameters.major }}
  minor: ${{ parameters.minor }}
  patch: ${{ parameters.patch }}
  finalChecksum : ${{ if contains(parameters.checksum, parameters.minor.parameters.patch) }}: parameters.checksum.split(',')[1] 

我追求的是finalchecksum:(因为验证工作正常)

if parameter.checksum contains/startsWith minor.patch:
then 
  finalchecksum = parameters.checksum.split(',')[1]

这里,

如果次要版本和补丁版本为 18.1,则 finalchecksum = d8e42f7a7b85ad72ba27117d1f13a790228f1369

在我的任务中,我有这样的事情:

- bash: |
              echo $(finalChecksum)

然后打印以下错误:

Line 1: `echo True:15.0, 8003fcfe34dc224be816921e9543fa58ba195653.Split(",")[0]'

我对打印checksum 感兴趣,我什至不知道parameters.checksum.split(',')[1] 确实存在于AzDo 世界中。任何建议都会很棒。

【问题讨论】:

    标签: azure azure-devops


    【解决方案1】:

    您可以使用内置函数来替换您的变量。我在示例中使用了replaceformat 函数。 这是我的配置:

    parameters:
    - name: major
      displayName: " Major Version(Default 3)"
      type: string
      default: 3
    
    - name: minor
      displayName: 'Minor Version(Default 15)'
      type: string
      default: 15
      values:
      - 15
      - 16
      - 17
      - 18
      - 19
    
    - name: patch
      displayName: 'Patch Version(Default 0)'
      type: string
      default: 0
    
    - name: checksum
      displayName: 'Pattern is minor version.patch version, checksum'
      type: string
      values:
      - '15.0, 8003fcfe34dc224be816921e9543fa58ba195653' 
      - '18.1, d8e42f7a7b85ad72ba27117d1f13a790228f1369'
      - '19.0, 4e66eeedba4e1f3ea26cadb0c2bfa96264e7c8fb'
    
    variables:
      major: ${{ parameters.major }}
      minor: ${{ parameters.minor }}
      patch: ${{ parameters.patch }}
      format: $[format('{0}.{1}, ', variables['minor'], variables['patch'])]
      ${{ if contains(parameters.checksum, parameters.minor.parameters.patch) }}:
        finalChecksum : $[replace('${{parameters.checksum}}',variables['format'],'')]
    

    echo $(finalChecksum) 的结果:

    另外,我关注这个文档到conditionally assign a variable

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 2020-06-02
      • 2021-03-14
      • 2021-03-20
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      相关资源
      最近更新 更多