#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:
Боюсь, что у меня есть короткий ответ. Вы не можете этого сделать. Вы не можете повторно использовать общие параметры. Вы можете просто вложить темлаты, но на самом деле ничего больше.