В моем azure конвейере я использовал для замены переменных в appsettings. json файл следующим образом:
Мой файл appsettings определяет переменные со значениями токенов
{
"AzureAd": {
"Instance": "__AAD_Instance__",
"Domain": "__AAD_Domain__",
"TenantId": "__AAD_TenantId__",
"ClientId": "__AAD_AuthorPortalApi_ClientId__"
}
В выпуске определены переменные конвейера
![enter image description here](https://i.stack.imgur.com/oK7f0.png)
- Задача токенизатора запускается в начале конвейера выпуска и заменяет токены на правильное значение.
Обратите внимание, что некоторые переменные похожи в разных приложениях . Например, выше у меня есть два приложения (AuthorPortalApi и FileApi), у обоих есть AzureAD ClientId, поэтому я должен включить имя приложения в токен, чтобы заменить его правильным значением.
Все это работает действительно хорошо, но теперь я перехожу на использование конвейера выпуска YAML. Единственная разница в том, что теперь переменные определены в специальном файле YAML:
variables:
- name: AAD_FilesApi_ClientId
value: some value
Я мог бы оставить его таким. Но я заметил, что задача по развертыванию azure webapp AzureRmWebAppDeployment
предоставляет способ подстановки переменных в настройках приложения. json:
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy my api'
inputs:
azureSubscription: 'my sub'
WebAppName: 'my-api'
packageForLinux: '$(workFolder)/my-api.zip'
JSONFiles: '**/appsettings.json'
В файле yaml переменных я определил свои переменные вот так:
variables:
- name: AzureAd.ClientId
value: some value
Это работает, но, как я уже сказал выше, если два приложения имеют одинаковую структуру json в настройках приложения. json, то как мне отличить их, чтобы заменить на правильные значения?
Я видел документацию , но в ней не показано, как определять переменные в шаблоне YAML.