Как правильно использовать Azure функций DevOps в шаблоне переменной? - PullRequest
0 голосов
/ 03 августа 2020

Как я могу использовать функцию Azure DevOps counter в шаблоне переменной?

До сих пор я использовал функцию counter для установки переменной в конвейере и значения установлен должным образом - он начинается с 1 и увеличивается каждый раз, когда я запускаю конвейер.

Шаблон переменной - /Variables/variables--code--build-and-deploy-function-app.yml

variables:
- name: major
  value: '1'
- name: minor
  value: '0'
- name: patch
  value: $[counter(format('{0}.{1}-{2}', variables['major'], variables['minor'], variables['Build.SourceBranchName']), 1)]
- name: branch
  ${{ if eq( variables['Build.SourceBranchName'], 'master' ) }}: 
    value: ''
  ${{ if ne( variables['Build.SourceBranchName'], 'master' ) }}: 
    value: -${{ variables['Build.SourceBranchName'] }}

Однако после перемещения тех же самых переменных в шаблон переменных , значение counter будет буквальным значением, указанным в шаблоне.

Копание далее в документации по шаблонам я нашел несколько слов о функциях выражения шаблона вместе с примером использования функции -

Вы можете использовать общие функции в ваших шаблонах. Вы также можете использовать несколько функций выражения шаблона.

Учитывая, что counter указан на странице, на которую ссылается ссылка выше, я предположил, что смогу его использовать. Однако, что бы я ни пробовал, я не могу заставить его работать. Вот несколько примеров -

${{ counter('${{ format('{0}.{1}-{2}', variables['major'], variables['minor'], variables['Build.SourceBranchName']) }}', 1) }}

${{ counter(format('{0}.{1}-{2}', variables['major'], variables['minor'], variables['Build.SourceBranchName']), 1) }}

$[counter('${{ format('{0}.{1}-{2}', variables['major'], variables['minor'], variables['Build.SourceBranchName']) }}', 1)]

Что я делаю не так?

Обновление

Мой шаблон переменной такой же, как указано выше, вот как я использую его в конвейере -

pr: none
trigger: none
    
variables:
- template: ../Variables/variables--code--build-and-deploy-function-app.yml

name: ${{ variables.major }}.${{ variables.minor }}.${{ variables.patch }}${{ variables.branch }}

Расширенный конвейер, полученный из журналов после запуска, выглядит следующим образом:

pr:
  enabled: false
trigger:
  enabled: false
variables:
- name: major
  value: 1
- name: minor
  value: 0
- name: patch
  value: $[counter(format('{0}.{1}-{2}', variables['major'], variables['minor'], variables['Build.SourceBranchName']), 1)]
- name: branch
  value: -CS-805
name: 1.0.$[counter(format('{0}.{1}-{2}', variables['major'], variables['minor'], variables['Build.SourceBranchName']), 1)]-CS-805

Как видно из расширенного конвейера, переменная patch не оценивается, в результате чего name содержит буквальное значение -

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

1 Ответ

1 голос
/ 04 августа 2020

Я вставил те же переменные в шаблон, и переменная patch работает должным образом. Кажется, ваш счетчик правильный.

Вот мой образец, вы можете сослаться на него:

Шаблон Yaml: build.yml

variables:
- name: major
  value: '1'
- name: minor
  value: '0'
- name: patch
  value: $[counter(format('{0}.{1}-{2}', variables['major'], variables['minor'], variables['Build.SourceBranchName']), 1)]

Azure - Pipelines.yml

name: $(patch)

trigger:
- none

variables:
- template: build.yml  

pool:
  vmImage: 'windows-latest'

steps:
- script: echo $(patch)
  displayName: 'Run a one-line script'

Чтобы сделать результат более интуитивным, я установил переменную patch для имени сборки.

Вот результат:

enter image description here

Update:

Test with $(varname) and it could work as expected.

trigger:
- none

variables:
- template: build.yml  


name: $(major).$(minor)-$(patch)$(branch)

Result:

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

$ (varname) означает время выполнения до выполнения задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...