Наследование параметров, определенных в конвейерах azure

#azure #azure-devops #azure-pipelines #azure-resource-manager #arm-template

Вопрос:

У меня есть несколько конвейеров azure, в которых есть похожие файлы azure YAML. Параметры, определенные в этих файлах YAML, повторяются. Может ли он быть унаследован, если я определю эти параметры в общем файле YAML?

##сберегательный счет.
имя yml: 
параметры сбережений:
 -имя:run_mode
тип:строка
по умолчанию:пользовательский
 -имя:app_version
тип:строка
по умолчанию:uat

этапы:

-этап:
выполнение заданий в формате RunScript:
 -задание:
шаги сценария: сценарий
 -сценарий: /mylocation/savings.sh -r ${{параметры.run_mode }} -a ${{ параметры.app_version}}

Это конвейер сберегательных счетов. Аналогично, у меня есть для кредитных/ипотечных счетов

##кредиты-имя учетной записи.yml
: 
параметры сбережений:
 -имя:run_mode
тип:строка
по умолчанию:пользовательский
 -имя:app_version
тип:строка
по умолчанию:uat

этапы:

-этап:
выполнение заданий в формате RunScript:
-задание:
шаги сценария: сценарий
-сценарий: /mylocation/loans.sh -r ${{параметры.run_mode }} -a ${{ параметры.app_version}}
и это справедливо и для других сценариев. Итак, если мы увидим оба примера, параметры останутся прежними, а задания->шаги->>файл сценария изменится. Могу ли я извлечь параметры из отдельных файлов и поместить их в общий файл, а затем каким-то образом расширить этот файл в других файлах. Я видел этот пример,
https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops
В нем говорится о наследовании процессов в виде шаблонов, но я не смог найти примера использования общих параметров. Я не хочу использовать переменные, так как не уверен, что их можно изменить во время выполнения извне из пользовательского интерфейса azure-конвейеров.

Ответ №1:

Альтернативный вариант-использовать переменный шаблон yaml в заданиях. Этот шаблон может ссылаться на один и тот же файл между конвейерами, чтобы уменьшить избыточность. Было бы переключением ${{parameters.}} на ${{variables.}} Возможность даже переключать группу переменных в зависимости от параметра, в данном случае среды.

Будет выглядеть так:

  jobs:
 -job: script
  variables:
  - template: ../variables/${{ parameters.environmentName }}.yml
  steps: script
  - script: /mylocation/loans.sh -r ${{variables.run_mode }} -a ${{ variables.app_version}}
 

Переменная.файл yml может выглядеть следующим образом:

 variables:
 -name:run_mode
  type:string
  value:custom
 -name:app_version
  type:string
  value:uat
 

Не совсем соответствует вашему запросу, но является альтернативой многократному определению одних и тех же значений.

Этот файл переменной может быть централизованно расположен в другом репозитории.

Ответ №2:

Боюсь, что у меня есть короткий ответ. Вы не можете этого сделать. Вы не можете повторно использовать общие параметры. Вы можете просто вложить темлаты, но на самом деле ничего больше.