Развертывание локального веб-приложения с измененными конфигурациями выпуска

Мы находимся в процессе настройки наших определений выпуска, чтобы, наконец, завершить последнюю часть нашей настройки CD / CI в VSTS, и столкнулись с проблемой, при которой мы не можем преобразовать наши конфигурации.

В настоящее время мы следуем подходу Скотта Хансельмана, согласно которому строки подключения и секреты не попадают в нашу сеть. config через файл secrets.config, потому что мы не хотим, чтобы эта информация передавалась в систему управления версиями. Если есть лучшая практика для этого сценария, мы открыты для переключения, но в настоящее время не уверены, как это будет интегрироваться с VSTS CD / CI.

Мы пробовали использовать XDT Transform Extension для преобразования нашей сети. base.config в web.config, чтобы удалить ссылки на файл и источники конфигурации, но, похоже, он не преобразуется.

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

Мы также использовали задачу «Развертывание веб-приложения IIS» с преобразованием XML и заменой переменной XML, но преобразование не работает, поскольку в артефактах отсутствует файл web.base.config. Я не уверен, почему это не используется при сборке.

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

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


person tokyo0709    schedule 29.11.2017    source источник
comment
Нет ничего плохого в том, что строки подключения к БД появляются в вашем web.config, это не так, как если бы они были видны извне. Если вас беспокоят пароли, вы можете подумать об использовании, скажем, аутентификации Windows, а не имени пользователя / пароля SQL. Лучшая безопасность - это когда вы вообще не упоминаете пароль   -  person MickyD    schedule 29.11.2017


Ответы (1)


Поскольку файл web.base.config не загружен в систему управления версиями и не загружен на машину агента сборки, вы не можете использовать XDT Transform или задачу / функцию преобразования XML.

Вы можете хранить данные в секретная переменная или Azure Key Vault и свяжите ее с определением выпуска.

Например:

  1. Добавьте новую переменную (щелкните значок замка) или свяжите Хранилище ключей Azure в определении выпуска (например, connectionStrings).
  2. Способ 1: проверьте параметр замены переменной XML (переменные, определенные в определении сборки или выпуска, будут сопоставляться с записями 'key' или 'name' в разделах appSettings, applicationSettings и connectionStrings любого файла конфигурации и parameters.xml. запускается после преобразования конфигурации.), тогда значение переменной будет заменено на файлы конфигурации
  3. Способ 2. Если веб-приложение опубликовано как пакет веб-развертывания: переопределите параметры веб-развертывания (SetParameters.xml), указав значение во вводе параметров переопределения в задаче выпуска. (Вы можете добавить файл parameters.xml в проект, тогда соответствующие параметры будут добавлены в файл SetParameters.xml при создании пакета веб-развертывания) Настройка параметров для развертывания веб-пакетов
  4. Способ 3. Использование задачи замены токена для замены токена в файле (например, #{mypassword}#) к значению переменной (mypassword)
person starian chen-MSFT    schedule 29.11.2017
comment
Спасибо за развернутый ответ. Наш web.base.config на самом деле находится в нашем исходном элементе управления, поэтому мы пытались выполнить преобразование изначально, но по какой-то причине он не отображается в наших артефактах после сборки. - person tokyo0709; 29.11.2017
comment
Если файл web.base.config не добавлен в проект, он не будет добавлен в вывод сборки. Поскольку он содержит секретную информацию, вам не следует добавлять его в систему управления версиями или артефакты сборки. - person starian chen-MSFT; 30.11.2017
comment
Спасибо! Way 2 идеально работает с локальным развертыванием из Azure Dev Ops. - person Philippe; 03.09.2019