Azure заменить токен для конечной точки модели обслуживания на Asp. net MVC в задаче выпуска конвейера - PullRequest
1 голос
/ 27 мая 2020

В моем решении 10+ проектов. В одном проекте есть файл config, name Variable.release.config, в котором есть все переменные приложения, строка подключения и другой модуль web.config, который необходимо заменить на переменную Azure из библиотеки. Этот файл конфигурации используется всем проектом. Решение имеет веб-сайт Asp. net MVC, на котором есть собственный web.config, web.release.config. Я пытаюсь xml преобразовать переменную из Variable.release.config. Он преобразует все в web.config, но значение переменной конечной точки в клиентском разделе адреса конечной точки не заменяется.

Раньше я использовал Azure App Service Deploy, и ниже приведен его YAML:

steps:

    - task: AzureRmWebAppDeployment@4
      displayName: 'Azure App Service Deploy: abc-tst'
      inputs:
        azureSubscription: 'ABC Technologies(XXXX-XXX-XXX-XXX-XXXXXX)'
        WebAppName: 'ABC-tst'
        deployToSlotOrASE: true
        ResourceGroupName: 'abc-tst'
        SlotName: T2
        packageForLinux: '$(System.DefaultWorkingDirectory)/$(Release.DefinitionName)/drop/ABC.Frontend.zip'
        enableXmlTransform: true
        enableXmlVariableSubstitution: true

Он не заменял переменную в конечных точках. Я наткнулся на несколько статей, в которых говорится, что только конечную точку нельзя заменить преобразованием xml. Мне нужно использовать сторонние инструменты для передачи Заменить токен

Я попытался выполнить следующие шаги:

  1. Преобразование файла
  2. Заменить токен
  3. Azure Развертывание службы приложений

Но он не заменил адрес переменной конечной точки в web.config, хотя он xml преобразовано было успешно, и в журналах Заменить токен заменил токен этой переменной.

После этого я изменил свою задачу выпуска, как показано на изображении ниже, после прочтения этого ответа .

Есть ли способ заменить значение переменной в адресе конечной точки, или мне что-то не хватает?

Azure release pipeline task

Ответы [ 2 ]

0 голосов
/ 14 августа 2020

Я пробовал со многими задачами azure, извлекая файл, затем преобразовывая его и снова заархивируя в то же место. Но ничего не вышло. Я удалил все задачи и оставил одну задачу «Azure развертывание службы приложений» со следующим YAML:

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

Я изменил конечную точку we.release.config следующим образом:

<endpoint address="#{variable1}"  binding="basicHttpBinding" bindingConfiguration="TransPortCertificateBinding" contract="Contract1" name="Service1"
                xdt:Transform="SetAttributes" xdt:Locator="Match(address)"/>

Раньше Match применялся к контракту, который не смог преобразовать значение из переменной библиотеки.

0 голосов
/ 27 мая 2020

Вы уверены, что все настроено так, как должно быть?

Я попробовал заменить этот токен в конвейере выпуска, и все прошло нормально. Вы уверены, что у вас правильно настроены файлы traget?

Есть ли у вас такой вывод в журналах?

2020-05-28T07:11:02.8850410Z replacing tokens in: D:\a\r1\a\repos\stackoverflow\38-endpoint-replace\Web.config
2020-05-28T07:11:02.9045428Z   1 tokens replaced out of 1
2020-05-28T07:11:02.9048164Z replaced 1 tokens out of 1 in 1 file(s) in 0.079 seconds.

Попробуйте добавить такой шаг PowerShell для проверки содержимого файла до и после шага замены токена .

enter image description here

Примечание

Имейте в виду, что этот мой последний совет - моя причина сохранить это в журналах. Если у вас есть конфиденциальные данные, отозвите их после или удалите из файла в тестовых целях.

...