Как использовать переменные среды, установленные в Azure Pipeline в файле web.config сервера ASP. NET? - PullRequest
1 голос
/ 29 января 2020

Я собираюсь использовать следующие переменные env из Azure Конвейер в ASP. NET web.config файле:

<connectionStrings>
    <add name="ApplicationDbContext" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:app-$(DeploymentEnvironment).database.windows.net,1433;Initial Catalog=app-db;Persist Security Info=False;User ID=$(DeploymentDBUserName);Password=$(DeploymentDBPassword);Encrypt=True;Application Name=EntityFramework&quot;" providerName="System.Data.EntityClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
    <add name="ServiceBus" connectionString="Endpoint=sb://app-$(DeploymentEnvironment)-bus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=$(ServiceBusAccessKey)" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
    <add name="Cache" connectionString="app-$(DeploymentEnvironment)-cache.redis.cache.windows.net:6380,password=$(CachePassword),ssl=True,abortConnect=False,allowAdmin=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
<connectionStrings />

Может ли кто-нибудь помочь?

Ответы [ 3 ]

0 голосов
/ 30 января 2020

Вы можете использовать задачу расширения RegEx Find & Replace или RegEx Match & Replace Задача заменить REGULAR EXPRESSIONS в файлах конфигурации переменными конвейера.

Сначала найдите и установите расширение RegEx Find & Replace (или RegEx Match & Replace Task) в вашей организации. Затем добавьте задачу для замены свойств переменными, которые вы определили в конвейере.

enter image description here

Вы также можете использовать Magi c Chunk task для замены свойств в конфигурационных файлах azure переменными среды конвейера.

enter image description here

Надеюсь, что выше помогает!

0 голосов
/ 02 февраля 2020

Вы можете использовать инструмент под названием «Заменить токены» в Azure Конвейеры

Например, у вас есть переменная окружения: var_1 = some_value

Тогда ваш файл конфигурации с токенами будет выглядеть примерно так:

<connectionStrings>
    <add name="ApplicationDbContext" connectionString="con-#{var_1}#" xdt:Transform="SetAttributes(connectionString)" xdt:Locator="Match(name)"/>
<connectionStrings />

Тогда после преобразования вы получите:

<connectionStrings>
    <add name="ApplicationDbContext" connectionString="con-some_value" xdt:Transform="SetAttributes(connectionString)" xdt:Locator="Match(name)"/>
<connectionStrings />

0 голосов
/ 29 января 2020

У меня есть пример того, как заменить значения в файле YAML, но идея с XML будет такой же. По сути, в моей основной ветке (которая запускает конвейер сборки) я выдвинул вместо значений некоторые строки, которые я заменю в сценарии bash на переменные. Пример ниже:

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |

      sed -i "s%AzureWebJobsStorage_Value%$AZUREWEBJOBSSTORAGE_VALUE%g" "deploy.yml"

      sed -i "s%SPEECH_SERVICE_KEY_Value%$SPEECH_SERVICE_KEY_VALUE%g" "deploy.yml"

      sed -i "s%SPEECH_REGION_Value%$SPEECH_REGION_VALUE%g" "deploy.yml"

      sed -i "s%GPT2SERVICE_ENDPOINT_Value%$GPT2SERVICE_ENDPOINT_VALUE%g" "deploy.yml"

      sed -i "s%TRANSLATOR_KEY_Value%$TRANSLATOR_KEY_VALUE%g" "deploy.yml"

      sed -i "s%TranslatorEndpoint_Value%$TRANSLATORENDPOINT_VALUE%g" "deploy.yml"

Как вы можете, например, 'TranslatorEndpoint_Value' - строка, которую я помещаю в yaml, и замените ее переменной $ TRANSLATORENDPOINT_VALUE, непосредственно перед тем, как выполнить следующий шаг, в котором я построить решение.

Я уверен, что могут быть и другие решения, но это то, что я делаю в этих случаях. Надеюсь, это поможет.

...