Условное присвоение переменной в конвейерах сборки Azure Devops

#azure #azure-devops

#azure #azure-devops

Вопрос:

В конвейерах Azure есть выражения и условия, но я не могу найти способ присвоить переменной одно из двух значений параметра на основе условия.

Могу ли я в любом случае добиться этого?

 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, то итоговая контрольная сумма = d8e42f7a7b85ad72ba27117d1f13a790228f1369

В моей задаче у меня есть что-то вроде этого :

 - bash: |
              echo $(finalChecksum)
  

Затем выводится сообщение об ошибке ниже:

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

Все, что меня интересует в печати checksum , и я даже не знаю parameters.checksum.split(',')[1] , существует в мире AzDo. Любые предложения были бы замечательными.

Ответ №1:

Для замены переменной можно использовать встроенные функции. В моем примере я использовал функции replace и format . Вот моя конфигурация:

 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 $(итоговая контрольная сумма):

введите описание изображения здесь

Кроме того, я следовал этому документу, чтобы условно назначить переменную.